diff --git a/packages/app/src/cli/services/dev/processes/setup-dev-processes.test.ts b/packages/app/src/cli/services/dev/processes/setup-dev-processes.test.ts index eb1585b6a9..bb9d3ff1bf 100644 --- a/packages/app/src/cli/services/dev/processes/setup-dev-processes.test.ts +++ b/packages/app/src/cli/services/dev/processes/setup-dev-processes.test.ts @@ -36,7 +36,6 @@ import {getEnvironmentVariables} from '@shopify/cli-kit/node/environment' import {isStorefrontPasswordProtected} from '@shopify/theme' import {fetchTheme} from '@shopify/cli-kit/node/themes/api' import {firstPartyDev} from '@shopify/cli-kit/node/context/local' -import {adminFqdn} from '@shopify/cli-kit/node/context/fqdn' vi.mock('../../context/identifiers.js') vi.mock('@shopify/cli-kit/node/session.js') @@ -45,13 +44,6 @@ vi.mock('@shopify/cli-kit/node/environment') vi.mock('@shopify/theme') vi.mock('@shopify/cli-kit/node/themes/api') vi.mock('@shopify/cli-kit/node/context/local') -vi.mock('@shopify/cli-kit/node/context/fqdn', async (importOriginal) => { - const original = await importOriginal() - return { - ...original, - adminFqdn: vi.fn(), - } -}) beforeEach(() => { // mocked for draft extensions @@ -79,7 +71,6 @@ beforeEach(() => { }) // By default, firstPartyDev is false (local dev console only shown for 1P devs) vi.mocked(firstPartyDev).mockReturnValue(false) - vi.mocked(adminFqdn).mockResolvedValue('admin.shopify.com') }) const appContextResult = { @@ -176,7 +167,7 @@ describe('setup-dev-processes', () => { }) // Dev console is NOT shown by default (only shown for 1P devs) - expect(res.previewUrl).toBe('https://admin.shopify.com/store/store/apps/api-key?dev-console=show') + expect(res.previewUrl).toBe('https://store.myshopify.io/admin/oauth/redirect_from_cli?client_id=api-key') expect(res.processes[0]).toMatchObject({ type: 'web', prefix: 'web-backend-frontend', @@ -206,7 +197,7 @@ describe('setup-dev-processes', () => { apiKey: 'api-key', apiSecret: 'api-secret', port: expect.any(Number), - appUrl: 'https://admin.shopify.com/store/store/apps/api-key?dev-console=show', + appUrl: 'https://store.myshopify.io/admin/oauth/redirect_from_cli?client_id=api-key', key: 'somekey', storeFqdn: 'store.myshopify.io', }, diff --git a/packages/app/src/cli/services/dev/processes/setup-dev-processes.ts b/packages/app/src/cli/services/dev/processes/setup-dev-processes.ts index 2ab5609397..0687de5a44 100644 --- a/packages/app/src/cli/services/dev/processes/setup-dev-processes.ts +++ b/packages/app/src/cli/services/dev/processes/setup-dev-processes.ts @@ -15,7 +15,7 @@ import {AppLinkedInterface, getAppScopes, WebType} from '../../../models/app/app import {OrganizationApp} from '../../../models/organization.js' import {DevOptions} from '../../dev.js' import {LocalhostCert, getProxyingWebServer} from '../../../utilities/app/http-reverse-proxy.js' -import {buildAppURLForAdmin, buildAppURLForWeb} from '../../../utilities/app/app-url.js' +import {buildAppURLForWeb} from '../../../utilities/app/app-url.js' import {ApplicationURLs} from '../urls.js' import {DeveloperPlatformClient} from '../../../utilities/developer-platform-client.js' import {AppEventWatcher} from '../app-events/app-event-watcher.js' @@ -25,7 +25,6 @@ import {isTruthy} from '@shopify/cli-kit/node/context/utilities' import {firstPartyDev} from '@shopify/cli-kit/node/context/local' import {getEnvironmentVariables} from '@shopify/cli-kit/node/environment' import {outputInfo} from '@shopify/cli-kit/node/output' -import {adminFqdn} from '@shopify/cli-kit/node/context/fqdn' interface ProxyServerProcess extends BaseProcess<{ @@ -92,6 +91,7 @@ export async function setupDevProcesses({ }> { const apiKey = remoteApp.apiKey const apiSecret = remoteApp.apiSecretKeys[0]?.secret ?? '' + const appPreviewUrl = buildAppURLForWeb(storeFqdn, apiKey) const env = getEnvironmentVariables() const shouldRenderGraphiQL = !isTruthy(env[environmentVariableNames.disableGraphiQLExplorer]) @@ -100,24 +100,10 @@ export async function setupDevProcesses({ const appWatcher = new AppEventWatcher(reloadedApp, network.proxyUrl) // Decide on the appropriate preview URL for a session with these processes - // - 1P developers with previewable extensions: use local dev console - // - 1P developers without previewable extensions: use legacy OAuth redirect URL - // - 3P developers: use unified admin URL + // Use local dev console only for 1P developers (SHOPIFY_CLI_1P_DEV is enabled) const anyPreviewableExtensions = reloadedApp.allExtensions.some((ext) => ext.isPreviewable) const devConsoleURL = `${network.proxyUrl}/extensions/dev-console` - const is1PDev = firstPartyDev() - - // appPreviewUrl is the direct app URL (used by GraphiQL and dev session fallback) - // previewURL is what's shown to the user (may be dev console for 1P devs) - let appPreviewUrl: string - if (is1PDev) { - appPreviewUrl = buildAppURLForWeb(storeFqdn, apiKey) - } else { - const adminDomain = await adminFqdn() - appPreviewUrl = buildAppURLForAdmin(storeFqdn, apiKey, adminDomain) - } - - const useDevConsole = is1PDev && anyPreviewableExtensions + const useDevConsole = firstPartyDev() && anyPreviewableExtensions const previewURL = useDevConsole ? devConsoleURL : appPreviewUrl const graphiqlURL = shouldRenderGraphiQL diff --git a/packages/app/src/cli/utilities/app/app-url.ts b/packages/app/src/cli/utilities/app/app-url.ts index 79afa5cd86..265b90a95f 100644 --- a/packages/app/src/cli/utilities/app/app-url.ts +++ b/packages/app/src/cli/utilities/app/app-url.ts @@ -6,13 +6,6 @@ export function buildAppURLForWeb(storeFqdn: string, apiKey: string) { return `https://${adminUrl}/admin/oauth/redirect_from_cli?client_id=${apiKey}` } -export function buildAppURLForAdmin(storeFqdn: string, apiKey: string, adminDomain: string) { - const normalizedFQDN = normalizeStoreFqdn(storeFqdn) - const storeName = normalizedFQDN.split('.')[0] - - return `https://${adminDomain}/store/${storeName}/apps/${apiKey}?dev-console=show` -} - export function buildAppURLForMobile(storeFqdn: string, apiKey: string) { const normalizedFQDN = normalizeStoreFqdn(storeFqdn) const adminUrl = storeAdminUrl(normalizedFQDN)