From 9c274c0eba9b02548e36f1aa9b6ce6697e540308 Mon Sep 17 00:00:00 2001 From: Marcus Pasell <3690498+rickyrombo@users.noreply.github.com> Date: Tue, 6 May 2025 17:08:42 -0700 Subject: [PATCH 01/16] Make api bridge for local dev (dummy that points to DN anyway) --- dev-tools/audius-compose | 1 + dev-tools/compose/docker-compose.yml | 1 + dev-tools/compose/nginx_ingress.conf | 24 +++++++++++++------ .../src/sdk/api/challenges/ChallengesApi.ts | 13 ++++++---- packages/sdk/src/sdk/config/development.ts | 2 +- packages/sdk/src/sdk/config/staging.ts | 8 ------- .../src/sdk/scripts/generateServicesConfig.ts | 2 +- packages/sdk/src/sdk/sdk.ts | 9 +------ 8 files changed, 30 insertions(+), 30 deletions(-) diff --git a/dev-tools/audius-compose b/dev-tools/audius-compose index cb6bbe86296..a694c39950a 100755 --- a/dev-tools/audius-compose +++ b/dev-tools/audius-compose @@ -24,6 +24,7 @@ audius-protocol-eth-ganache-1 \ audius-protocol-pedalboard \ audius-protocol-anti-abuse-oracle-1 \ audius-protocol-discovery-provider-redis-1 \ +audius-protocol-api-bridge \ """ diff --git a/dev-tools/compose/docker-compose.yml b/dev-tools/compose/docker-compose.yml index dcb70fceabf..611777eb841 100644 --- a/dev-tools/compose/docker-compose.yml +++ b/dev-tools/compose/docker-compose.yml @@ -24,6 +24,7 @@ x-common: &common - 'audius-protocol-solana-test-validator-1:host-gateway' - 'audius-protocol-eth-ganache-1:host-gateway' - 'audius-protocol-pedalboard:host-gateway' + - 'audius-protocol-api-bridge:host-gateway' deploy: resources: limits: diff --git a/dev-tools/compose/nginx_ingress.conf b/dev-tools/compose/nginx_ingress.conf index 9285b0b4d44..9fcf53ea4fe 100644 --- a/dev-tools/compose/nginx_ingress.conf +++ b/dev-tools/compose/nginx_ingress.conf @@ -78,13 +78,6 @@ server { proxy_pass http://audiusd-1:26659/core$1$is_args$args; proxy_set_header Host $http_host; } - - location ~ ^/v1/rewards(/.*)?$ { - resolver 127.0.0.11 valid=30s; - proxy_pass http://host.docker.internal:1323/v1/rewards$1; - proxy_set_header Host $http_host; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - } } @@ -322,3 +315,20 @@ server { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } + +# +# API BRIDGE (Defaults to DN right now) +# +server { + listen 80; + server_name audius-protocol-api-bridge; + location / { + resolver 127.0.0.11 valid=30s; + set $upstream audius-protocol-api-bridge:5000; + proxy_pass http://$upstream; + proxy_set_header Host $http_host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_http_version 1.1; + proxy_set_header Connection ""; + } +} diff --git a/packages/sdk/src/sdk/api/challenges/ChallengesApi.ts b/packages/sdk/src/sdk/api/challenges/ChallengesApi.ts index 1331d91b251..22310bf7b9f 100644 --- a/packages/sdk/src/sdk/api/challenges/ChallengesApi.ts +++ b/packages/sdk/src/sdk/api/challenges/ChallengesApi.ts @@ -338,15 +338,18 @@ export class ChallengesApi extends GeneratedChallengesApi { * or challenge ID + specifier. */ public async claimAllRewards(request: ClaimAllRewardsRequest) { - const args = await parseParams( - 'claimAllRewards', - ClaimAllRewardsSchema - )(request) + await parseParams('claimAllRewards', ClaimAllRewardsSchema)(request) const res = await this.request({ path: '/rewards/claim', method: 'POST', headers: { 'Content-Type': 'application/json' }, - body: args + body: { + ...('userId' in request ? { userId: request.userId } : {}), + ...('challengeId' in request + ? { challengeId: request.challengeId } + : {}), + ...('specifier' in request ? { specifier: request.specifier } : {}) + } }) return (await res.json()) as ClaimAllResponseBody } diff --git a/packages/sdk/src/sdk/config/development.ts b/packages/sdk/src/sdk/config/development.ts index 8043ed24c35..4f2c4df6fc3 100644 --- a/packages/sdk/src/sdk/config/development.ts +++ b/packages/sdk/src/sdk/config/development.ts @@ -7,7 +7,7 @@ import type { SdkServicesConfig } from './types' export const developmentConfig: SdkServicesConfig = { "network": { "minVersion": "0.0.0", - "apiEndpoint": "http://audius-protocol-discovery-provider-1", + "apiEndpoint": "http://audius-protocol-api-bridge", "discoveryNodes": [ { "delegateOwnerWallet": "0xd09ba371c359f10f22ccda12fd26c598c7921bda3220c9942174562bc6a36fe8", diff --git a/packages/sdk/src/sdk/config/staging.ts b/packages/sdk/src/sdk/config/staging.ts index 1a04552b9aa..116e55103fb 100644 --- a/packages/sdk/src/sdk/config/staging.ts +++ b/packages/sdk/src/sdk/config/staging.ts @@ -31,14 +31,6 @@ export const stagingConfig: SdkServicesConfig = { } ], "storageNodes": [ - { - "endpoint": "https://creatornode10.staging.audius.co", - "delegateOwnerWallet": "0xf7C96916bd37Ad76D4EEDd6536B81c29706C8056" - }, - { - "endpoint": "https://creatornode8.staging.audius.co", - "delegateOwnerWallet": "0x8fcFA10Bd3808570987dbb5B1EF4AB74400FbfDA" - }, { "endpoint": "https://creatornode12.staging.audius.co", "delegateOwnerWallet": "0x6b52969934076318863243fb92E9C4b3A08267b5" diff --git a/packages/sdk/src/sdk/scripts/generateServicesConfig.ts b/packages/sdk/src/sdk/scripts/generateServicesConfig.ts index b26a6b141cf..b9e7c7895d4 100644 --- a/packages/sdk/src/sdk/scripts/generateServicesConfig.ts +++ b/packages/sdk/src/sdk/scripts/generateServicesConfig.ts @@ -162,7 +162,7 @@ const stagingConfig: SdkServicesConfig = { const developmentConfig: SdkServicesConfig = { network: { minVersion: '0.0.0', - apiEndpoint: 'http://audius-protocol-discovery-provider-1', + apiEndpoint: 'http://audius-protocol-api-bridge', discoveryNodes: [ { delegateOwnerWallet: diff --git a/packages/sdk/src/sdk/sdk.ts b/packages/sdk/src/sdk/sdk.ts index ecc50e23ef5..e88b2343417 100644 --- a/packages/sdk/src/sdk/sdk.ts +++ b/packages/sdk/src/sdk/sdk.ts @@ -433,13 +433,6 @@ const initializeApis = ({ middleware, basePath: `${basePath}/v1` }) - const apiClientConfigWithDiscoveryNodeSelector = new Configuration({ - fetchApi: fetch, - middleware: [ - ...middleware, - services.discoveryNodeSelector.createMiddleware() - ] - }) const tracks = new TracksApi( apiClientConfig, @@ -508,7 +501,7 @@ const initializeApis = ({ ) const challenges = new ChallengesApi( - apiClientConfigWithDiscoveryNodeSelector, + apiClientConfig, users, services.discoveryNodeSelector, services.rewardManagerClient, From 37dd39b033d7cf96f753b1a1340e0fffeee774f4 Mon Sep 17 00:00:00 2001 From: Marcus Pasell <3690498+rickyrombo@users.noreply.github.com> Date: Tue, 6 May 2025 23:03:06 -0700 Subject: [PATCH 02/16] eh fine --- dev-tools/compose/nginx_ingress.conf | 4 ++-- packages/sdk/src/sdk/config/development.ts | 2 +- packages/sdk/src/sdk/scripts/generateServicesConfig.ts | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/dev-tools/compose/nginx_ingress.conf b/dev-tools/compose/nginx_ingress.conf index 9fcf53ea4fe..d4beecdbb82 100644 --- a/dev-tools/compose/nginx_ingress.conf +++ b/dev-tools/compose/nginx_ingress.conf @@ -317,14 +317,14 @@ server { } # -# API BRIDGE (Defaults to DN right now) +# API BRIDGE # server { listen 80; server_name audius-protocol-api-bridge; location / { resolver 127.0.0.11 valid=30s; - set $upstream audius-protocol-api-bridge:5000; + set $upstream audius-protocol-api-bridge:1323; proxy_pass http://$upstream; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; diff --git a/packages/sdk/src/sdk/config/development.ts b/packages/sdk/src/sdk/config/development.ts index 4f2c4df6fc3..8043ed24c35 100644 --- a/packages/sdk/src/sdk/config/development.ts +++ b/packages/sdk/src/sdk/config/development.ts @@ -7,7 +7,7 @@ import type { SdkServicesConfig } from './types' export const developmentConfig: SdkServicesConfig = { "network": { "minVersion": "0.0.0", - "apiEndpoint": "http://audius-protocol-api-bridge", + "apiEndpoint": "http://audius-protocol-discovery-provider-1", "discoveryNodes": [ { "delegateOwnerWallet": "0xd09ba371c359f10f22ccda12fd26c598c7921bda3220c9942174562bc6a36fe8", diff --git a/packages/sdk/src/sdk/scripts/generateServicesConfig.ts b/packages/sdk/src/sdk/scripts/generateServicesConfig.ts index b9e7c7895d4..b26a6b141cf 100644 --- a/packages/sdk/src/sdk/scripts/generateServicesConfig.ts +++ b/packages/sdk/src/sdk/scripts/generateServicesConfig.ts @@ -162,7 +162,7 @@ const stagingConfig: SdkServicesConfig = { const developmentConfig: SdkServicesConfig = { network: { minVersion: '0.0.0', - apiEndpoint: 'http://audius-protocol-api-bridge', + apiEndpoint: 'http://audius-protocol-discovery-provider-1', discoveryNodes: [ { delegateOwnerWallet: From 6f81b7cd5f46ba2e763fa6f50333c8e0f1134667 Mon Sep 17 00:00:00 2001 From: Marcus Pasell <3690498+rickyrombo@users.noreply.github.com> Date: Tue, 6 May 2025 23:08:35 -0700 Subject: [PATCH 03/16] remove fluff --- packages/commands/src/utils.ts | 43 ---------------------------------- 1 file changed, 43 deletions(-) diff --git a/packages/commands/src/utils.ts b/packages/commands/src/utils.ts index cf6934f8221..cfea1e896df 100644 --- a/packages/commands/src/utils.ts +++ b/packages/commands/src/utils.ts @@ -138,7 +138,6 @@ class ErrorLogger implements LoggerService { export const initializeAudiusSdk = async ({ handle }: { handle?: string } = {}) => { - let isDummyWallet = false const solanaRelay = new SolanaRelay( new Configuration({ basePath: '/solana', @@ -167,29 +166,6 @@ export const initializeAudiusSdk = async ({ throw new Error(`Failed to find entropy for handle ${handle}`) } localStorage.setItem('hedgehog-entropy-key', handleEntropy) - } else { - isDummyWallet = true - // If we aren't logged in, create dummy entropy so sdk/libs work correctly - const entropy = localStorage.getItem('hedgehog-entropy-key') - if (!entropy) { - const password = `audius-dummy-pkey-${Math.floor( - Math.random() * 1000000 - )}` - const result = await WalletManager.createWalletObj( - password, - null, - localStorage, - getPlatformCreateKey() - ) - if (result instanceof Error) { - throw result - } - console.log(result.walletObj.getPrivateKeyString()) - const entropy = localStorage.getItem('hedgehog-entropy-key') - if (!entropy) { - throw new Error('Failed to create entropy') - } - } } const audiusWalletClient = createHedgehogWalletClient(getHedgehog()) @@ -205,25 +181,6 @@ export const initializeAudiusSdk = async ({ }) currentHandle = handle - - if (!isDummyWallet) { - try { - const [address] = - await audiusSdk.services.audiusWalletClient.getAddresses() - // Try to get current user. May fail if we're using a dummy entropy - const { data } = await audiusSdk.full.users.getUserAccount({ - wallet: address - }) - if (data?.user) { - currentUserId = await parseUserId(data.user.id) - if (!currentUserId) { - console.warn('Failed to parse currentUserId') - } - } - } catch (e) { - console.warn('Failed to get currentUser', e) - } - } } return audiusSdk From 2e193a07db5908ff36bc9583c374b8ab82db55fc Mon Sep 17 00:00:00 2001 From: Marcus Pasell <3690498+rickyrombo@users.noreply.github.com> Date: Tue, 6 May 2025 23:08:53 -0700 Subject: [PATCH 04/16] ping identity to add necessary fields --- packages/commands/src/user/create-user.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/packages/commands/src/user/create-user.ts b/packages/commands/src/user/create-user.ts index 50543d88ad5..e03d2114da7 100644 --- a/packages/commands/src/user/create-user.ts +++ b/packages/commands/src/user/create-user.ts @@ -59,6 +59,18 @@ export const createUserCommand = new Command('create') const entropy = localStorage.getItem('hedgehog-entropy-key') + // Ping identity with a signature to set the handle/blockchainUserId + const message = `audius-cmd ping` + const signature = await audiusSdk.services.audiusWalletClient.signMessage({ + message + }) + await fetch('http://audius-protocol-identity-service-1/user/email', { + headers: { + ['Encoded-Data-Message']: message, + ['Encoded-Data-Signature']: signature + } + }) + if (options.output === 'json') { console.log(JSON.stringify(newMetadata)) } else { From d29aaad95cf54c1aeb89dcdf88b47e457afcc08a Mon Sep 17 00:00:00 2001 From: Marcus Pasell <3690498+rickyrombo@users.noreply.github.com> Date: Wed, 7 May 2025 00:57:32 -0700 Subject: [PATCH 05/16] fix seeding remix --- packages/web/e2e/data.seed.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/web/e2e/data.seed.ts b/packages/web/e2e/data.seed.ts index 2f2437e67a2..117e9d0d8fd 100644 --- a/packages/web/e2e/data.seed.ts +++ b/packages/web/e2e/data.seed.ts @@ -77,7 +77,7 @@ setup('seed data', async () => { (async () => { console.info('Uploading remix...') await audiusCmd( - `track upload --remix-of '{"tracks":[{"parentTrackId":"${trackId}"}]}' -o json > ${dataFilePath('remix.json')}` + `track upload --remix-of ${trackId} -o json > ${dataFilePath('remix.json')}` ) const remixId = JSON.parse( await readFile(dataFilePath('remix.json'), 'utf8') From 331cd4340fbdacbea0aeb90815d34bc2ea97f700 Mon Sep 17 00:00:00 2001 From: Marcus Pasell <3690498+rickyrombo@users.noreply.github.com> Date: Wed, 7 May 2025 00:57:53 -0700 Subject: [PATCH 06/16] fix navigation via page nav --- packages/web/src/app/web-player/WebPlayer.jsx | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/web/src/app/web-player/WebPlayer.jsx b/packages/web/src/app/web-player/WebPlayer.jsx index f837c43fd10..a0134183d2a 100644 --- a/packages/web/src/app/web-player/WebPlayer.jsx +++ b/packages/web/src/app/web-player/WebPlayer.jsx @@ -364,6 +364,7 @@ class WebPlayer extends Component { : authenticatedRoutes if ( !this.props.hasAccount && + this.props.accountStatus !== Status.IDLE && this.props.accountStatus !== Status.LOADING && allowedRoutes.some((route) => { const match = matchPath(getPathname(this.props.location), { From e2015c5453a15fd832349c4424bdb1eaed3a9ff8 Mon Sep 17 00:00:00 2001 From: Marcus Pasell <3690498+rickyrombo@users.noreply.github.com> Date: Wed, 7 May 2025 00:58:02 -0700 Subject: [PATCH 07/16] fix auth test --- packages/web/e2e/auth.setup.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/web/e2e/auth.setup.ts b/packages/web/e2e/auth.setup.ts index ec5f4fdc243..0a0c8ab7322 100644 --- a/packages/web/e2e/auth.setup.ts +++ b/packages/web/e2e/auth.setup.ts @@ -9,7 +9,7 @@ setup('authenticate', async ({ page }) => { const user = getUser() const base64Entropy = btoa(user.entropy.trim()) await page.goto(`/feed?login=${base64Entropy}`) - await expect(page.getByRole('heading', { name: 'Your Feed' })).toBeVisible({ + await expect(page.getByText(user.name)).toBeVisible({ timeout: 15000 }) await page.evaluate(() => { From 39679ddad0e57a4b2b0657ed661feb9b8673397a Mon Sep 17 00:00:00 2001 From: Marcus Pasell <3690498+rickyrombo@users.noreply.github.com> Date: Wed, 7 May 2025 01:02:42 -0700 Subject: [PATCH 08/16] undo --- dev-tools/audius-compose | 1 - dev-tools/compose/docker-compose.yml | 1 - dev-tools/compose/nginx_ingress.conf | 24 +++++++----------------- 3 files changed, 7 insertions(+), 19 deletions(-) diff --git a/dev-tools/audius-compose b/dev-tools/audius-compose index a694c39950a..cb6bbe86296 100755 --- a/dev-tools/audius-compose +++ b/dev-tools/audius-compose @@ -24,7 +24,6 @@ audius-protocol-eth-ganache-1 \ audius-protocol-pedalboard \ audius-protocol-anti-abuse-oracle-1 \ audius-protocol-discovery-provider-redis-1 \ -audius-protocol-api-bridge \ """ diff --git a/dev-tools/compose/docker-compose.yml b/dev-tools/compose/docker-compose.yml index 611777eb841..dcb70fceabf 100644 --- a/dev-tools/compose/docker-compose.yml +++ b/dev-tools/compose/docker-compose.yml @@ -24,7 +24,6 @@ x-common: &common - 'audius-protocol-solana-test-validator-1:host-gateway' - 'audius-protocol-eth-ganache-1:host-gateway' - 'audius-protocol-pedalboard:host-gateway' - - 'audius-protocol-api-bridge:host-gateway' deploy: resources: limits: diff --git a/dev-tools/compose/nginx_ingress.conf b/dev-tools/compose/nginx_ingress.conf index d4beecdbb82..9285b0b4d44 100644 --- a/dev-tools/compose/nginx_ingress.conf +++ b/dev-tools/compose/nginx_ingress.conf @@ -78,6 +78,13 @@ server { proxy_pass http://audiusd-1:26659/core$1$is_args$args; proxy_set_header Host $http_host; } + + location ~ ^/v1/rewards(/.*)?$ { + resolver 127.0.0.11 valid=30s; + proxy_pass http://host.docker.internal:1323/v1/rewards$1; + proxy_set_header Host $http_host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } } @@ -315,20 +322,3 @@ server { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } - -# -# API BRIDGE -# -server { - listen 80; - server_name audius-protocol-api-bridge; - location / { - resolver 127.0.0.11 valid=30s; - set $upstream audius-protocol-api-bridge:1323; - proxy_pass http://$upstream; - proxy_set_header Host $http_host; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_http_version 1.1; - proxy_set_header Connection ""; - } -} From 8d9f266c887e3ba2dcd780080ac3d1715014a1dd Mon Sep 17 00:00:00 2001 From: Marcus Pasell <3690498+rickyrombo@users.noreply.github.com> Date: Wed, 7 May 2025 01:08:08 -0700 Subject: [PATCH 09/16] Remove unused --- packages/commands/src/utils.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/commands/src/utils.ts b/packages/commands/src/utils.ts index cfea1e896df..c5b97b113bd 100644 --- a/packages/commands/src/utils.ts +++ b/packages/commands/src/utils.ts @@ -44,7 +44,6 @@ export const parseUserId = async (arg: string) => { } let audiusSdk: AudiusSdk | undefined -let currentUserId: number | undefined let currentHandle: string | undefined let hedgehog: Hedgehog | undefined @@ -156,7 +155,7 @@ export const initializeAudiusSdk = async ({ }) ) - if (!audiusSdk || !currentUserId || (handle && currentHandle !== handle)) { + if (!audiusSdk || (handle && currentHandle !== handle)) { // If handle was provided, unset current entropy and replace with the entropy // for the given user before initializing UserAuth if (handle) { From 7a4f049165bacec8ad3b86c56122df138379ea7e Mon Sep 17 00:00:00 2001 From: Marcus Pasell <3690498+rickyrombo@users.noreply.github.com> Date: Wed, 7 May 2025 01:08:58 -0700 Subject: [PATCH 10/16] Remove unused --- packages/commands/src/utils.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/packages/commands/src/utils.ts b/packages/commands/src/utils.ts index c5b97b113bd..771757c7fb3 100644 --- a/packages/commands/src/utils.ts +++ b/packages/commands/src/utils.ts @@ -7,14 +7,11 @@ import { encodeHashId, decodeHashId, ResponseError, - Logger, type LoggerService } from '@audius/sdk' import { Hedgehog, - WalletManager, - getPlatformCreateKey, type GetFn, type SetAuthFn, type SetUserFn From d62a0ec867149495c2753499ca7a770a14bfd7c0 Mon Sep 17 00:00:00 2001 From: Marcus Pasell <3690498+rickyrombo@users.noreply.github.com> Date: Wed, 7 May 2025 15:44:10 -0700 Subject: [PATCH 11/16] remove ping --- packages/commands/src/user/create-user.ts | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/packages/commands/src/user/create-user.ts b/packages/commands/src/user/create-user.ts index e03d2114da7..50543d88ad5 100644 --- a/packages/commands/src/user/create-user.ts +++ b/packages/commands/src/user/create-user.ts @@ -59,18 +59,6 @@ export const createUserCommand = new Command('create') const entropy = localStorage.getItem('hedgehog-entropy-key') - // Ping identity with a signature to set the handle/blockchainUserId - const message = `audius-cmd ping` - const signature = await audiusSdk.services.audiusWalletClient.signMessage({ - message - }) - await fetch('http://audius-protocol-identity-service-1/user/email', { - headers: { - ['Encoded-Data-Message']: message, - ['Encoded-Data-Signature']: signature - } - }) - if (options.output === 'json') { console.log(JSON.stringify(newMetadata)) } else { From f890f0d86da31f1c034327c77720fdc5dbd2bcb5 Mon Sep 17 00:00:00 2001 From: Marcus Pasell <3690498+rickyrombo@users.noreply.github.com> Date: Wed, 7 May 2025 15:45:11 -0700 Subject: [PATCH 12/16] use sdk --- .../identity-service/src/authMiddleware.js | 84 +++++++++---------- packages/identity-service/src/index.ts | 22 +++++ 2 files changed, 60 insertions(+), 46 deletions(-) diff --git a/packages/identity-service/src/authMiddleware.js b/packages/identity-service/src/authMiddleware.js index e5cf53a29a5..90169a364da 100644 --- a/packages/identity-service/src/authMiddleware.js +++ b/packages/identity-service/src/authMiddleware.js @@ -10,38 +10,7 @@ const models = require('./models') const audiusLibsWrapper = require('./audiusLibsInstance') const { encodeHashId } = require('./notifications/utils') - -/** - * queryDiscprovForUserId - Queries the discovery provider for the user w/ the walletaddress - * @param {string} walletAddress - * @returns {object} User Metadata object - */ -const queryDiscprovForUserId = async (walletAddress, handle) => { - const { discoveryProvider } = audiusLibsWrapper.getAudiusLibs() - - const response = await axios({ - method: 'get', - url: `${discoveryProvider.discoveryProviderEndpoint}/users`, - params: { - wallet: walletAddress - } - }) - - if (!Array.isArray(response.data.data) || !(response.data.data.length >= 1)) { - throw new Error('Unable to retrieve user from discovery provder') - } - const usersList = response.data.data - if (usersList.length === 1) { - const [user] = response.data.data - return user - } else { - for (const respUser of usersList) { - if (respUser.handle === handle) { - return respUser - } - } - } -} +const { decodeHashId } = require('@audius/sdk') /** * Queries for whether the wallet address has privilege to act as actingUserId @@ -101,7 +70,6 @@ async function authMiddleware(req, res, next) { try { const encodedDataMessage = req.get('Encoded-Data-Message') const signature = req.get('Encoded-Data-Signature') - const handle = req.query.handle const actingUserId = Number.parseInt(req.query.user_id, 10) if (!encodedDataMessage) throw new Error('[Error]: Encoded data missing') @@ -146,12 +114,24 @@ async function authMiddleware(req, res, next) { // This overwrites any provisionally set handles (b/c blockchainUserId is never set with those), // ensuring that the user.handle always represents the latest state on chain if (!user.blockchainUserId || !user.handle) { - const discprovUser = await queryDiscprovForUserId(walletAddress, handle) - user = await user.update({ - blockchainUserId: discprovUser.user_id, - handle: discprovUser.handle, - isGuest: !discprovUser.handle - }) + try { + const res = await req.app.get('audiusSdk').full.users.getUserAccount({ + wallet: walletAddress, + encodedDataMessage, + encodedDataSignature: signature + }) + const discprovUser = res.data.user + const userId = decodeHashId(discprovUser.id) + const handle = discprovUser.handle + user = await user.update({ + blockchainUserId: userId, + handle, + isGuest: !handle + }) + } catch (e) { + console.error(e) + req.logger.error(e, 'Failed to update blockchainUserId/handle') + } } req.user = user next() @@ -178,7 +158,6 @@ const parameterizedAuthMiddleware = ({ shouldRespondBadRequest }) => { try { const encodedDataMessage = req.get('Encoded-Data-Message') const signature = req.get('Encoded-Data-Signature') - const handle = req.query.handle if (!encodedDataMessage) throw new Error('[Error]: Encoded data missing') if (!signature) throw new Error('[Error]: Encoded data signature missing') @@ -187,7 +166,7 @@ const parameterizedAuthMiddleware = ({ shouldRespondBadRequest }) => { data: encodedDataMessage, sig: signature }) - const user = await models.User.findOne({ + let user = await models.User.findOne({ where: { walletAddress }, attributes: [ 'id', @@ -203,11 +182,24 @@ const parameterizedAuthMiddleware = ({ shouldRespondBadRequest }) => { ) if (!user.blockchainUserId || !user.handle) { - const discprovUser = await queryDiscprovForUserId(walletAddress, handle) - await user.update({ - blockchainUserId: discprovUser.user_id, - handle: discprovUser.handle - }) + try { + const res = await req.app.get('audiusSdk').full.users.getUserAccount({ + wallet: walletAddress, + encodedDataMessage, + encodedDataSignature: signature + }) + const discprovUser = res.data.user + const userId = decodeHashId(discprovUser.id) + const handle = discprovUser.handle + user = await user.update({ + blockchainUserId: userId, + handle, + isGuest: !handle + }) + } catch (e) { + console.error(e) + req.logger.error(e, 'Failed to update blockchainUserId/handle') + } } req.user = user next() diff --git a/packages/identity-service/src/index.ts b/packages/identity-service/src/index.ts index 29b80bb133f..60066f5314d 100644 --- a/packages/identity-service/src/index.ts +++ b/packages/identity-service/src/index.ts @@ -2,6 +2,7 @@ import { ethereumRouter } from './typed-routes/ethereum/ethRpc' import { solanaRouter } from './typed-routes/solana/solanaRelay' +import { DiscoveryNodeSelector, sdk } from '@audius/sdk' // Import libs before anything else becaues it takes a very long time to load. // Once it's imported once, it'll be in the cache and subsequent imports will be ~instant. @@ -26,6 +27,27 @@ process.on('unhandledRejection', (reason, promise) => { const start = async () => { const port = config.get('port') const app = new App(port) + + const environment = process.env.environment as + | 'development' + | 'staging' + | 'production' + | undefined + logger.info('Starting SDK in environment:', environment) + + const audiusSdk = sdk({ + appName: 'identity-service', + environment: environment ?? 'development', + services: { + discoveryNodeSelector: new DiscoveryNodeSelector({ + allowlist: config.get('discoveryProviderWhitelist') + ? new Set(config.get('discoveryProviderWhitelist').split(',')) + : undefined + }) + } + }) + app.express.set('audiusSdk', audiusSdk) + // TODO: Move this into App once it's typed app.express.use('/solana', solanaRouter) app.express.use('/ethereum', ethereumRouter) From 7c48c53830898167f7ded11971fc292e1399406e Mon Sep 17 00:00:00 2001 From: Marcus Pasell <3690498+rickyrombo@users.noreply.github.com> Date: Wed, 7 May 2025 15:49:14 -0700 Subject: [PATCH 13/16] try/catch recordIP --- packages/common/src/store/account/sagas.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/common/src/store/account/sagas.ts b/packages/common/src/store/account/sagas.ts index d61c82c72fd..3781ad0b240 100644 --- a/packages/common/src/store/account/sagas.ts +++ b/packages/common/src/store/account/sagas.ts @@ -242,7 +242,14 @@ export function* fetchAccountAsync({ if (user.handle) { // guest account don't have handles - yield* call(recordIPIfNotRecent, user.handle) + try { + yield* call(recordIPIfNotRecent, user.handle) + } catch (e) { + yield* call(reportToSentry, { + name: 'FetchAccountAsync', + error: e as Error + }) + } } // Cache the account and put the signedIn action. We're done. From 2a5756fe90ddf17060501627bc75563d8b373231 Mon Sep 17 00:00:00 2001 From: Marcus Pasell <3690498+rickyrombo@users.noreply.github.com> Date: Wed, 7 May 2025 16:04:22 -0700 Subject: [PATCH 14/16] Fix build error --- .../src/workers/createStemsArchive/createStemsArchive.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/discovery-provider/plugins/pedalboard/apps/archiver/src/workers/createStemsArchive/createStemsArchive.ts b/packages/discovery-provider/plugins/pedalboard/apps/archiver/src/workers/createStemsArchive/createStemsArchive.ts index 28d7908db26..94f38597f1a 100644 --- a/packages/discovery-provider/plugins/pedalboard/apps/archiver/src/workers/createStemsArchive/createStemsArchive.ts +++ b/packages/discovery-provider/plugins/pedalboard/apps/archiver/src/workers/createStemsArchive/createStemsArchive.ts @@ -13,6 +13,7 @@ import { import path from 'path' import { WorkerServices } from '../services' import { createUtils } from './utils' +import fetch from 'node-fetch' type StemsArchiveWorkerListener = WorkerListener< StemsArchiveJobData, From 33557831bbd5f445fc1e6b90a6db2a5519dc7a80 Mon Sep 17 00:00:00 2001 From: Marcus Pasell <3690498+rickyrombo@users.noreply.github.com> Date: Wed, 7 May 2025 16:40:57 -0700 Subject: [PATCH 15/16] remove unnecessary trap and kill --- .circleci/src/jobs/@integration-jobs.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.circleci/src/jobs/@integration-jobs.yml b/.circleci/src/jobs/@integration-jobs.yml index e36baff7e02..8b17d865ef1 100644 --- a/.circleci/src/jobs/@integration-jobs.yml +++ b/.circleci/src/jobs/@integration-jobs.yml @@ -65,14 +65,8 @@ integration-test: name: run playwright tests command: | cd packages/web - trap 'npx playwright stop' EXIT RUN_AGAINST_LOCAL_STACK=true npx playwright test when: always - - run: - name: shutdown playwright - command: | - pkill -f playwright || true - when: always - store_test_results: path: packages/web/report.xml when: always From b3598a48371a40ab39a7490709b88279e4ecbe13 Mon Sep 17 00:00:00 2001 From: Marcus Pasell <3690498+rickyrombo@users.noreply.github.com> Date: Wed, 7 May 2025 17:46:30 -0700 Subject: [PATCH 16/16] console error --- packages/identity-service/src/authMiddleware.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/identity-service/src/authMiddleware.js b/packages/identity-service/src/authMiddleware.js index 90169a364da..97bd39a260d 100644 --- a/packages/identity-service/src/authMiddleware.js +++ b/packages/identity-service/src/authMiddleware.js @@ -129,7 +129,6 @@ async function authMiddleware(req, res, next) { isGuest: !handle }) } catch (e) { - console.error(e) req.logger.error(e, 'Failed to update blockchainUserId/handle') } } @@ -197,7 +196,6 @@ const parameterizedAuthMiddleware = ({ shouldRespondBadRequest }) => { isGuest: !handle }) } catch (e) { - console.error(e) req.logger.error(e, 'Failed to update blockchainUserId/handle') } }