Support Takahē

Signed-off-by: marcin mikołajczak <git@mkljczk.pl>
environments/review-takahe-bt2bcm/deployments/1876
marcin mikołajczak 2022-12-27 21:42:17 +01:00
rodzic 35d9863f42
commit 81e1e2d6ad
5 zmienionych plików z 41 dodań i 2 usunięć

Wyświetl plik

@ -1,3 +1,5 @@
import { getFeatures } from 'soapbox/utils/features';
import api, { getLinks } from '../api';
import type { AxiosError } from 'axios';
@ -18,10 +20,17 @@ const SCHEDULED_STATUS_CANCEL_FAIL = 'SCHEDULED_STATUS_CANCEL_FAIL';
const fetchScheduledStatuses = () =>
(dispatch: AppDispatch, getState: () => RootState) => {
if (getState().status_lists.get('scheduled_statuses')?.isLoading) {
const state = getState();
if (state.status_lists.get('scheduled_statuses')?.isLoading) {
return;
}
const instance = state.instance;
const features = getFeatures(instance);
if (!features.scheduledStatuses) return;
dispatch(fetchScheduledStatusesRequest());
api(getState).get('/api/v1/scheduled_statuses').then(response => {

Wyświetl plik

@ -17,6 +17,8 @@ const fetchTrendingStatuses = () =>
const instance = state.instance;
const features = getFeatures(instance);
if (!features.trendingStatuses && !features.trendingTruths) return;
dispatch({ type: TRENDING_STATUSES_FETCH_REQUEST });
return api(getState).get(features.trendingTruths ? '/api/v1/truth/trending/truths' : '/api/v1/trends/statuses').then(({ data: statuses }) => {
dispatch(importFetchedStatuses(statuses));

Wyświetl plik

@ -52,7 +52,7 @@ const Settings = () => {
const isMfaEnabled = mfa.getIn(['settings', 'totp']);
useEffect(() => {
dispatch(fetchMfa());
if (features.security) dispatch(fetchMfa());
}, [dispatch]);
if (!account) return null;

Wyświetl plik

@ -101,6 +101,17 @@ const normalizeVersion = (instance: ImmutableMap<string, any>) => {
});
};
/** Rename Akkoma to Pleroma+akkoma */
const fixTakahe = (instance: ImmutableMap<string, any>) => {
const version: string = instance.get('version', '');
if (version.startsWith('takahe/')) {
return instance.set('version', `0.0.0 (compatible; takahe ${version.slice(7)})`);
} else {
return instance;
}
};
/** Rename Akkoma to Pleroma+akkoma */
const fixAkkoma = (instance: ImmutableMap<string, any>) => {
const version: string = instance.get('version', '');
@ -131,6 +142,7 @@ export const normalizeInstance = (instance: Record<string, any>) => {
// Normalize version
normalizeVersion(instance);
fixTakahe(instance);
fixAkkoma(instance);
// Merge defaults

Wyświetl plik

@ -64,6 +64,12 @@ export const GLITCH = 'glitch';
*/
export const AKKOMA = 'akkoma';
/**
* Takahē, backend with support for serving multiple domains.
* @see {@link https://jointakahe.org/}
*/
export const TAKAHE = 'takahe';
/** Parse features for the given instance */
const getInstanceFeatures = (instance: Instance) => {
const v = parseVersion(instance.version);
@ -288,6 +294,7 @@ const getInstanceFeatures = (instance: Instance) => {
v.software === MASTODON && gte(v.compatVersion, '2.6.0'),
v.software === PLEROMA && gte(v.version, '0.9.9'),
v.software === PIXELFED,
v.software === TAKAHE,
]),
/**
@ -299,6 +306,14 @@ const getInstanceFeatures = (instance: Instance) => {
v.software === PLEROMA && gte(v.version, '0.9.9'),
]),
editProfile: any([
v.software === MASTODON,
v.software === MITRA,
v.software === PIXELFED,
v.software === PLEROMA,
v.software === TRUTHSOCIAL,
]),
editStatuses: any([
v.software === MASTODON && gte(v.version, '3.5.0'),
features.includes('editing'),
@ -574,6 +589,7 @@ const getInstanceFeatures = (instance: Instance) => {
publicTimeline: any([
v.software === MASTODON,
v.software === PLEROMA,
v.software === TAKAHE,
]),
/**