diff --git a/apps/web/src/composables/users.ts b/apps/web/src/composables/users.ts index 0a93cad25..92748df45 100644 --- a/apps/web/src/composables/users.ts +++ b/apps/web/src/composables/users.ts @@ -1,5 +1,5 @@ import { ref } from 'vue' -import { AddAccountOptions, ProviderString, RemoveAccountOptions, UserWithAccounts, Account, ExistingUserCheck, ErrorSuccessInterface } from '@casimir/types' +import { AddAccountOptions, ProviderString, RemoveAccountOptions, UserWithAccounts, ExistingUserCheck, ApiResponse } from '@casimir/types' import useEnvironment from '@/composables/environment' import * as Session from 'supertokens-web-js/recipe/session' @@ -11,7 +11,7 @@ const user = ref() export default function useUsers () { - async function addAccount(account: AddAccountOptions): Promise { + async function addAccount(account: AddAccountOptions): Promise { try { const requestOptions = { method: 'POST', @@ -29,7 +29,7 @@ export default function useUsers () { } } - async function checkIfPrimaryUserExists(provider: ProviderString, address: string): Promise { + async function checkIfPrimaryUserExists(provider: ProviderString, address: string): Promise { try { const requestOptions = { method: 'GET', @@ -40,13 +40,13 @@ export default function useUsers () { const response = await fetch(`${usersBaseURL}/auth/check-if-primary-address-exists/${provider}/${address}`, requestOptions) const { error, message, data } = await response.json() if (error) throw new Error(message) - return data + return { error, message, data } } catch (error) { throw new Error(error.message || 'Error checking if primary user exists') } } - async function checkIfSecondaryAddress(address: string) : Promise { + async function checkIfSecondaryAddress(address: string) : Promise { try { const requestOptions = { method: 'GET', @@ -55,9 +55,9 @@ export default function useUsers () { } } const response = await fetch(`${usersBaseURL}/auth/check-secondary-address/${address}`, requestOptions) - const { error, message, data: users } = await response.json() + const { error, message, data } = await response.json() if (error) throw new Error(message) - return users + return { error, message, data } } catch (error) { throw new Error(error.message || 'Error checking if secondary address') } @@ -94,7 +94,7 @@ export default function useUsers () { return message } - async function getUser() : Promise { + async function getUser() : Promise { try { const requestOptions = { method: 'GET', diff --git a/apps/web/src/composables/wallet.ts b/apps/web/src/composables/wallet.ts index d67660e0e..f5c5fc2a4 100644 --- a/apps/web/src/composables/wallet.ts +++ b/apps/web/src/composables/wallet.ts @@ -5,7 +5,7 @@ import useSolana from '@/composables/solana' import useTrezor from '@/composables/trezor' import useUsers from '@/composables/users' import useWalletConnect from '@/composables/walletConnect' -import { Account, CryptoAddress, Currency, ExistingUserCheck, LoginCredentials, MessageRequest, ProviderString, TransactionRequest, ErrorSuccessInterface } from '@casimir/types' +import { Account, CryptoAddress, Currency, LoginCredentials, MessageRequest, ProviderString, TransactionRequest } from '@casimir/types' import * as Session from 'supertokens-web-js/recipe/session' // Test ethereum send from address : 0xd557a5745d4560B24D36A68b52351ffF9c86A212 @@ -64,7 +64,7 @@ export default function useWallet() { * @param currency * @returns */ - async function connectWallet(): Promise { + async function connectWallet(): Promise { try { // Sign Up or Login if (!user?.value?.address) { await login() @@ -103,11 +103,6 @@ export default function useWallet() { } await setUserAccountBalances() console.log('user.value after connecting wallet :>> ', user.value) - return { - error: false, - message: 'Successfully connected wallet', - data: user.value - } } catch (error) { loadingUserWallets.value = false throw new Error(error.message || 'There was an error connecting the wallet') @@ -258,14 +253,14 @@ export default function useWallet() { * @param provider * @param currency */ - async function selectAddress(address: any, pathIndex?: string) : Promise { + async function selectAddress(address: any, pathIndex?: string) : Promise { try { address = trimAndLowercaseAddress(address) setSelectedAddress(address) setSelectedCurrency('ETH') // TODO: Implement this for other currencies when supported. if (pathIndex) setSelectedPathIndex(pathIndex) - const { sameAddress, sameProvider } : ExistingUserCheck = await checkIfPrimaryUserExists(selectedProvider.value, selectedAddress.value) + const { data: { sameAddress, sameProvider } } = await checkIfPrimaryUserExists(selectedProvider.value, selectedAddress.value) if (sameAddress && sameProvider ) { await connectWallet() // login return { @@ -277,24 +272,12 @@ export default function useWallet() { throw new Error('Address already exists as a primary address using another provider') } - const accountsIfSecondaryAddress : Account[] | void = await checkIfSecondaryAddress(selectedAddress.value) - console.log('accountsIfSecondaryAddress :>> ', accountsIfSecondaryAddress) - if (accountsIfSecondaryAddress.length) { - throw new Error(`${selectedAddress.value} already exists as a secondary address on this/these account(s): ${JSON.stringify(accountsIfSecondaryAddress)}`) - } else { - await connectWallet() // sign up or add account - return { - error: false, - message: 'Address does not exist as a primary address using this provider', - } - } + const { data: accountsIfSecondaryAddress } = await checkIfSecondaryAddress(selectedAddress.value) + if (accountsIfSecondaryAddress.length) throw new Error(`${selectedAddress.value} already exists as a secondary address on this/these account(s): ${JSON.stringify(accountsIfSecondaryAddress)}`) + await connectWallet() // sign up or add account } catch (error) { // TODO: @shanejearley - What do we want to do here? - console.error('Error in selectAddress: ', error.message) - return { - error: true, - message: error.message - } + throw new Error(error.message || 'There was an error selecting address') } } @@ -303,7 +286,7 @@ export default function useWallet() { * @param provider * @param currency */ - async function selectProvider(provider: ProviderString, currency: Currency = 'ETH'): Promise { + async function selectProvider(provider: ProviderString, currency: Currency = 'ETH'): Promise { console.clear() try { if (provider === 'WalletConnect') { @@ -323,17 +306,8 @@ export default function useWallet() { const trezorAddresses = await getTrezorAddress[currency]() as CryptoAddress[] setUserAddresses(trezorAddresses) } - return { - error: false, - message: 'Successfully selected provider' - } } catch (error) { - console.error('selectProvider error: ', error) - return { - error: true, - message: error.message as string || 'Error selecting provider', - data: error.name as string || null - } + throw new Error(`Error selecting provider: ${error.message}`) } } diff --git a/common/types/src/index.ts b/common/types/src/index.ts index 1ed29d8c3..49bde75c2 100644 --- a/common/types/src/index.ts +++ b/common/types/src/index.ts @@ -10,7 +10,7 @@ import { CryptoAddress } from './interfaces/CryptoAddress' import { Currency } from './interfaces/Currency' import { DeploymentConfig } from './interfaces/DeploymentConfig' import { EthersProvider } from './interfaces/EthersProvider' -import { ErrorSuccessInterface } from './interfaces/ErrorSuccessInterface' +import { ApiResponse } from './interfaces/ApiResponse' import { Event } from './interfaces/Event' import { ExistingUserCheck } from './interfaces/ExistingUserCheck' import { GasEstimate } from './interfaces/GasEstimate' @@ -39,7 +39,7 @@ export type { Currency, DeploymentConfig, EthersProvider, - ErrorSuccessInterface, + ApiResponse, Event, ExistingUserCheck, GasEstimate, diff --git a/common/types/src/interfaces/ApiResponse.ts b/common/types/src/interfaces/ApiResponse.ts new file mode 100644 index 000000000..ce907466e --- /dev/null +++ b/common/types/src/interfaces/ApiResponse.ts @@ -0,0 +1,7 @@ +import { ExistingUserCheck } from './ExistingUserCheck' + +export interface ApiResponse { + error: boolean; + message: string; + data?: any | ExistingUserCheck; // TODO: Can expand this to include more types +} \ No newline at end of file diff --git a/common/types/src/interfaces/ErrorSuccessInterface.ts b/common/types/src/interfaces/ErrorSuccessInterface.ts deleted file mode 100644 index 7c7758b0a..000000000 --- a/common/types/src/interfaces/ErrorSuccessInterface.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface ErrorSuccessInterface { - error: boolean; - message: string; - data?: any; -} \ No newline at end of file