refactor(arch): Phase 2 — deduplicate isAdmin, convertToUsd, getBaseWalletType

- #54: Extract isAdmin() to src/middleware/auth.js, remove duplicates from 7 admin handlers
- #55: Add WalletUtils.convertToUsd(), replace 8 switch-case blocks across 4 files
- #56: Unify getBaseWalletType() — keep only WalletUtils version (most complete),
  remove duplicates from Wallet.js and userWalletsHandler.js

New file: src/middleware/auth.js
Net: -215 lines, +80 lines

Closes: #54, #55, #56
This commit is contained in:
NW
2026-06-17 22:10:34 +01:00
parent de415633be
commit 68d83807ad
13 changed files with 80 additions and 215 deletions

View File

@@ -4,11 +4,6 @@ import db from "../config/database.js";
import WalletUtils from "../utils/walletUtils.js";
export default class Wallet {
static getBaseWalletType(walletType) {
if (walletType.includes('ERC-20')) return 'ETH';
return walletType;
}
static async getArchivedWallets(userId) {
const archivedWallets = await db.allAsync(`
SELECT * FROM crypto_wallets WHERE user_id = ? AND wallet_type LIKE '%_%'
@@ -60,7 +55,7 @@ export default class Wallet {
let totalUsdBalance = 0;
for (const [type, balance] of Object.entries(balances)) {
const baseType = this.getBaseWalletType(type);
const baseType = WalletUtils.getBaseWalletType(type);
const wallet = activeWallets.wallets.find(w =>
w.wallet_type === baseType ||
(type.includes('ERC-20') && w.wallet_type === 'ETH')
@@ -92,7 +87,7 @@ export default class Wallet {
let totalUsdBalance = 0;
for (const [type, balance] of Object.entries(balances)) {
const baseType = this.getBaseWalletType(type);
const baseType = WalletUtils.getBaseWalletType(type);
const wallet = archiveWallets.wallets.find(w =>
w.wallet_type === baseType ||
(type.includes('ERC-20') && w.wallet_type.startsWith('ETH'))