diff --git a/src/actions/about.test.ts b/src/actions/about.test.ts
deleted file mode 100644
index 34e5240f7..000000000
--- a/src/actions/about.test.ts
+++ /dev/null
@@ -1,44 +0,0 @@
-import MockAdapter from 'axios-mock-adapter';
-import { describe, expect, it } from 'vitest';
-
-import { staticClient } from 'soapbox/api/index.ts';
-import { mockStore } from 'soapbox/jest/test-helpers.tsx';
-
-import {
- FETCH_ABOUT_PAGE_REQUEST,
- FETCH_ABOUT_PAGE_SUCCESS,
- FETCH_ABOUT_PAGE_FAIL,
- fetchAboutPage,
-} from './about.ts';
-
-describe('fetchAboutPage()', () => {
- it('creates the expected actions on success', () => {
-
- const mock = new MockAdapter(staticClient);
-
- mock.onGet('/instance/about/index.html')
- .reply(200, '
Hello world
');
-
- const expectedActions = [
- { type: FETCH_ABOUT_PAGE_REQUEST, slug: 'index' },
- { type: FETCH_ABOUT_PAGE_SUCCESS, slug: 'index', html: 'Hello world
' },
- ];
- const store = mockStore({});
-
- return store.dispatch(fetchAboutPage()).then(() => {
- expect(store.getActions()).toEqual(expectedActions);
- });
- });
-
- it('creates the expected actions on failure', () => {
- const expectedActions = [
- { type: FETCH_ABOUT_PAGE_REQUEST, slug: 'asdf' },
- { type: FETCH_ABOUT_PAGE_FAIL, slug: 'asdf', error: new Error('Request failed with status code 404') },
- ];
- const store = mockStore({});
-
- return store.dispatch(fetchAboutPage('asdf')).catch(() => {
- expect(store.getActions()).toEqual(expectedActions);
- });
- });
-});
diff --git a/src/actions/notifications.ts b/src/actions/notifications.ts
index 6ecf8023b..03019abb4 100644
--- a/src/actions/notifications.ts
+++ b/src/actions/notifications.ts
@@ -9,7 +9,6 @@ import { compareId } from 'soapbox/utils/comparators.ts';
import { getFeatures, parseVersion, PLEROMA } from 'soapbox/utils/features.ts';
import { unescapeHTML } from 'soapbox/utils/html.ts';
import { EXCLUDE_TYPES, NOTIFICATION_TYPES } from 'soapbox/utils/notification.ts';
-import { joinPublicPath } from 'soapbox/utils/static.ts';
import { fetchRelationships } from './accounts.ts';
import { fetchGroupRelationships } from './groups.ts';
@@ -120,7 +119,7 @@ const updateNotificationsQueue = (notification: APIEntity, intlMessages: Record<
icon: notification.account.avatar,
tag: notification.id,
data: {
- url: joinPublicPath('/notifications'),
+ url: '/notifications',
},
}).catch(console.error);
}).catch(console.error);
diff --git a/src/actions/soapbox.ts b/src/actions/soapbox.ts
index 31e7679b1..cee62ab4f 100644
--- a/src/actions/soapbox.ts
+++ b/src/actions/soapbox.ts
@@ -6,7 +6,7 @@ import KVStore from 'soapbox/storage/kv-store.ts';
import { removeVS16s } from 'soapbox/utils/emoji.ts';
import { getFeatures } from 'soapbox/utils/features.ts';
-import api, { staticClient } from '../api/index.ts';
+import api from '../api/index.ts';
import type { AppDispatch, RootState } from 'soapbox/store.ts';
import type { APIEntity } from 'soapbox/types/entities.ts';
@@ -86,7 +86,7 @@ const loadSoapboxConfig = () =>
const fetchSoapboxJson = (host: string | null) =>
(dispatch: AppDispatch) =>
- staticClient.get('/instance/soapbox.json').then(({ data }) => {
+ fetch('/instance/soapbox.json').then((response) => response.json()).then((data) => {
if (!isObject(data)) throw 'soapbox.json failed';
dispatch(importSoapboxConfig(data, host));
return data;
diff --git a/src/api/__mocks__/index.ts b/src/api/__mocks__/index.ts
index d0664bbe6..ff5fba2c2 100644
--- a/src/api/__mocks__/index.ts
+++ b/src/api/__mocks__/index.ts
@@ -15,8 +15,6 @@ const setupMock = (axios: AxiosInstance) => {
mocks.map(func => func(mock));
};
-export const staticClient = api.staticClient;
-
export const getLinks = (response: AxiosResponse): LinkHeader => {
return new LinkHeader(response.headers?.link);
};
diff --git a/src/api/index.ts b/src/api/index.ts
index 7a7e9aeaf..0898ab576 100644
--- a/src/api/index.ts
+++ b/src/api/index.ts
@@ -82,16 +82,6 @@ export const baseClient = (
});
};
-/**
- * Dumb client for grabbing static files.
- * It uses FE_SUBDIRECTORY and parses JSON if possible.
- * No authorization is needed.
- */
-export const staticClient = axios.create({
- baseURL: BuildConfig.FE_SUBDIRECTORY,
- transformResponse: [maybeParseJSON],
-});
-
/**
* Stateful API client.
* Uses credentials from the Redux store if available.
diff --git a/src/build-config-compiletime.ts b/src/build-config-compiletime.ts
index e4ccfb943..8c74312b2 100644
--- a/src/build-config-compiletime.ts
+++ b/src/build-config-compiletime.ts
@@ -3,15 +3,12 @@
* @module soapbox/build-config
*/
-// eslint-disable-next-line import/extensions
-import trim from 'lodash/trim.js';
// eslint-disable-next-line import/extensions
import trimEnd from 'lodash/trimEnd.js';
const {
NODE_ENV,
BACKEND_URL,
- FE_SUBDIRECTORY,
FE_INSTANCE_SOURCE_DIR,
SENTRY_DSN,
} = process.env;
@@ -24,14 +21,9 @@ const sanitizeURL = (url: string | undefined = ''): string => {
}
};
-const sanitizeBasename = (path: string | undefined = ''): string => {
- return `/${trim(path, '/')}`;
-};
-
const env = {
NODE_ENV: NODE_ENV || 'development',
BACKEND_URL: sanitizeURL(BACKEND_URL),
- FE_SUBDIRECTORY: sanitizeBasename(FE_SUBDIRECTORY),
FE_INSTANCE_SOURCE_DIR: FE_INSTANCE_SOURCE_DIR || 'instance',
SENTRY_DSN,
};
diff --git a/src/build-config.ts b/src/build-config.ts
index d8799de7e..340a691e6 100644
--- a/src/build-config.ts
+++ b/src/build-config.ts
@@ -3,7 +3,6 @@ import type { SoapboxEnv } from './build-config-compiletime.ts';
export const {
NODE_ENV,
BACKEND_URL,
- FE_SUBDIRECTORY,
FE_INSTANCE_SOURCE_DIR,
SENTRY_DSN,
} = import.meta.compileTime('./build-config-compiletime.ts');
diff --git a/src/components/announcements/emoji.tsx b/src/components/announcements/emoji.tsx
index 927278484..f9994ec47 100644
--- a/src/components/announcements/emoji.tsx
+++ b/src/components/announcements/emoji.tsx
@@ -1,6 +1,5 @@
import unicodeMapping from 'soapbox/features/emoji/mapping.ts';
import { useSettings } from 'soapbox/hooks/useSettings.ts';
-import { joinPublicPath } from 'soapbox/utils/static.ts';
import type { Map as ImmutableMap } from 'immutable';
@@ -25,7 +24,7 @@ const Emoji: React.FC = ({ emoji, emojiMap, hovered }) => {
className='emojione m-0 block'
alt={emoji}
title={title}
- src={joinPublicPath(`packs/emoji/${filename}.svg`)}
+ src={`/packs/emoji/${filename}.svg`}
/>
);
} else if (emojiMap.get(emoji as any)) {
diff --git a/src/components/autosuggest-emoji.tsx b/src/components/autosuggest-emoji.tsx
index 218d74012..81d27a480 100644
--- a/src/components/autosuggest-emoji.tsx
+++ b/src/components/autosuggest-emoji.tsx
@@ -1,6 +1,5 @@
import { isCustomEmoji } from 'soapbox/features/emoji/index.ts';
import unicodeMapping from 'soapbox/features/emoji/mapping.ts';
-import { joinPublicPath } from 'soapbox/utils/static.ts';
import type { Emoji } from 'soapbox/features/emoji/index.ts';
@@ -21,7 +20,7 @@ const AutosuggestEmoji: React.FC = ({ emoji }) => {
return null;
}
- url = joinPublicPath(`packs/emoji/${mapping.unified}.svg`);
+ url = `/packs/emoji/${mapping.unified}.svg`;
alt = emoji.native;
}
diff --git a/src/components/ui/emoji.tsx b/src/components/ui/emoji.tsx
index ae33d6376..da3449ccb 100644
--- a/src/components/ui/emoji.tsx
+++ b/src/components/ui/emoji.tsx
@@ -1,5 +1,4 @@
import { removeVS16s, toCodePoints } from 'soapbox/utils/emoji.ts';
-import { joinPublicPath } from 'soapbox/utils/static.ts';
interface IEmoji extends React.ImgHTMLAttributes {
/** Unicode emoji character. */
@@ -23,7 +22,7 @@ const Emoji: React.FC = (props): JSX.Element | null => {
);
diff --git a/src/features/emoji/components/emoji-picker.tsx b/src/features/emoji/components/emoji-picker.tsx
index 74cdc5d0f..927f010ba 100644
--- a/src/features/emoji/components/emoji-picker.tsx
+++ b/src/features/emoji/components/emoji-picker.tsx
@@ -2,14 +2,12 @@ import spriteSheet from 'emoji-datasource/img/twitter/sheets/32.png';
import { Picker as EmojiPicker } from 'emoji-mart';
import { useRef, useEffect } from 'react';
-import { joinPublicPath } from 'soapbox/utils/static.ts';
-
import data from '../data.ts';
const getSpritesheetURL = () => spriteSheet;
-const getImageURL = (set: string, name: string) => {
- return joinPublicPath(`/packs/emoji/${name}.svg`);
+const getImageURL = (_set: string, name: string) => {
+ return `/packs/emoji/${name}.svg`;
};
const Picker: React.FC = (props) => {
diff --git a/src/init/soapbox-mount.tsx b/src/init/soapbox-mount.tsx
index bf61583c3..eafccacae 100644
--- a/src/init/soapbox-mount.tsx
+++ b/src/init/soapbox-mount.tsx
@@ -4,7 +4,6 @@ import { BrowserRouter, Switch, Redirect, Route } from 'react-router-dom';
import { CompatRouter } from 'react-router-dom-v5-compat';
import { openModal } from 'soapbox/actions/modals.ts';
-import * as BuildConfig from 'soapbox/build-config.ts';
import LoadingScreen from 'soapbox/components/loading-screen.tsx';
import { ScrollContext } from 'soapbox/components/scroll-context.tsx';
import SiteErrorBoundary from 'soapbox/components/site-error-boundary.tsx';
@@ -48,7 +47,7 @@ const SoapboxMount = () => {
return (
-
+
diff --git a/src/utils/static.ts b/src/utils/static.ts
deleted file mode 100644
index 266d975a1..000000000
--- a/src/utils/static.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * Static: functions related to static files.
- * @module soapbox/utils/static
- */
-
-import { join } from 'path-browserify';
-
-import * as BuildConfig from 'soapbox/build-config.ts';
-
-/** Gets the path to a file with build configuration being considered. */
-export const joinPublicPath = (...paths: string[]): string => {
- return join(BuildConfig.FE_SUBDIRECTORY, ...paths);
-};