UNPKG

@accounter/server

Version:
62 lines 3.28 kB
import { AdminContextProvider } from '../../admin-context/providers/admin-context.provider.js'; import { AuthContextProvider } from '../../auth/providers/auth-context.provider.js'; import { FinancialEntitiesProvider } from '../../financial-entities/providers/financial-entities.provider.js'; export const userContextResolvers = { Query: { userContext: async (_, __, { injector }) => { const authContext = await injector.get(AuthContextProvider).getAuthContext(); const businessNamesMap = new Map(); await Promise.all((authContext?.memberships ?? []) .filter(membership => membership.businessId) .map(async (m) => { try { const financialEntity = await injector .get(FinancialEntitiesProvider) .getFinancialEntityByIdLoader.load(m.businessId); if (financialEntity?.name) { businessNamesMap.set(m.businessId, financialEntity.name); } } catch (error) { console.error(`Failed to load financial entity for business ${m.businessId}:`, error); } })); const memberships = (authContext?.memberships ?? []).map((membership) => ({ businessId: membership.businessId, role: membership.roleId, businessName: membership.businessName ?? businessNamesMap.get(membership.businessId) ?? null, })); const activeReadScope = authContext?.activeReadScope?.businessIds ?? []; // Single-business preference fields only make sense when the request reads // from exactly one business; for multi-business reads they are null and // callers must narrow the scope to obtain them. if (activeReadScope.length !== 1) { return { memberships, activeReadScope, defaultLocalCurrency: null, defaultCryptoConversionFiatCurrency: null, ledgerLock: null, financialAccountsBusinessesIds: null, locality: null, }; } const { financialAccounts: { internalWalletsIds }, bankDeposits: { bankDepositBusinessId }, defaultLocalCurrency, defaultCryptoConversionFiatCurrency, ledgerLock, locality, } = await injector.get(AdminContextProvider).getVerifiedAdminContext(); const financialAccountsBusinessesIds = [...internalWalletsIds]; if (bankDepositBusinessId) { // TODO: this should be removed after bank deposit conversion to financial account is done (then - it should be added to internalWalletsIds) financialAccountsBusinessesIds.push(bankDepositBusinessId); } return { memberships, activeReadScope, defaultLocalCurrency, defaultCryptoConversionFiatCurrency, ledgerLock, financialAccountsBusinessesIds, locality, }; }, }, }; //# sourceMappingURL=user-context.resolver.js.map