Merge branch 'translation-fixes' into 'main'
Translation fixes See merge request soapbox-pub/soapbox!3140
This commit is contained in:
commit
f3b607e609
|
@ -1,10 +1,9 @@
|
|||
import { createAsyncThunk } from '@reduxjs/toolkit';
|
||||
import get from 'lodash/get';
|
||||
import { gte } from 'semver';
|
||||
|
||||
import { instanceSchema } from 'soapbox/schemas';
|
||||
import { RootState } from 'soapbox/store';
|
||||
import { getAuthUserUrl, getMeUrl } from 'soapbox/utils/auth';
|
||||
import { MASTODON, parseVersion, PLEROMA, REBASED } from 'soapbox/utils/features';
|
||||
import { getFeatures } from 'soapbox/utils/features';
|
||||
|
||||
import api from '../api';
|
||||
|
||||
|
@ -19,18 +18,6 @@ export const getHost = (state: RootState) => {
|
|||
}
|
||||
};
|
||||
|
||||
const supportsInstanceV2 = (instance: Record<string, any>): boolean => {
|
||||
const v = parseVersion(get(instance, 'version'));
|
||||
return (v.software === MASTODON && gte(v.compatVersion, '4.0.0')) ||
|
||||
(v.software === PLEROMA && v.build === REBASED && gte(v.version, '2.5.54'));
|
||||
};
|
||||
|
||||
/** We may need to fetch nodeinfo on Pleroma < 2.1 */
|
||||
const needsNodeinfo = (instance: Record<string, any>): boolean => {
|
||||
const v = parseVersion(get(instance, 'version'));
|
||||
return v.software === PLEROMA && !get(instance, ['pleroma', 'metadata']);
|
||||
};
|
||||
|
||||
interface InstanceData {
|
||||
instance: Record<string, any>;
|
||||
host: string | null | undefined;
|
||||
|
@ -40,15 +27,14 @@ export const fetchInstance = createAsyncThunk<InstanceData, InstanceData['host']
|
|||
'instance/fetch',
|
||||
async(host, { dispatch, getState, rejectWithValue }) => {
|
||||
try {
|
||||
const { data: instance } = await api(getState).get('/api/v1/instance');
|
||||
const { data } = await api(getState).get('/api/v1/instance');
|
||||
const instance = instanceSchema.parse(data);
|
||||
const features = getFeatures(instance);
|
||||
|
||||
if (supportsInstanceV2(instance)) {
|
||||
if (features.instanceV2) {
|
||||
dispatch(fetchInstanceV2(host));
|
||||
}
|
||||
|
||||
if (needsNodeinfo(instance)) {
|
||||
dispatch(fetchNodeinfo());
|
||||
}
|
||||
return { instance, host };
|
||||
} catch (e) {
|
||||
return rejectWithValue(e);
|
||||
|
@ -67,8 +53,3 @@ export const fetchInstanceV2 = createAsyncThunk<InstanceData, InstanceData['host
|
|||
}
|
||||
},
|
||||
);
|
||||
|
||||
export const fetchNodeinfo = createAsyncThunk<void, void, { state: RootState }>(
|
||||
'nodeinfo/fetch',
|
||||
async(_arg, { getState }) => await api(getState).get('/nodeinfo/2.1.json'),
|
||||
);
|
||||
|
|
|
@ -316,11 +316,12 @@ const toggleStatusHidden = (status: Status) => {
|
|||
}
|
||||
};
|
||||
|
||||
const translateStatus = (id: string, targetLanguage?: string) => (dispatch: AppDispatch, getState: () => RootState) => {
|
||||
const translateStatus = (id: string, lang?: string) => (dispatch: AppDispatch, getState: () => RootState) => {
|
||||
dispatch({ type: STATUS_TRANSLATE_REQUEST, id });
|
||||
|
||||
api(getState).post(`/api/v1/statuses/${id}/translate`, {
|
||||
target_language: targetLanguage,
|
||||
lang, // Mastodon API
|
||||
target_language: lang, // HACK: Rebased and Pleroma compatibility
|
||||
}).then(response => {
|
||||
dispatch({
|
||||
type: STATUS_TRANSLATE_SUCCESS,
|
||||
|
|
|
@ -711,6 +711,7 @@ const getInstanceFeatures = (instance: Instance) => {
|
|||
instanceV2: any([
|
||||
v.software === MASTODON && gte(v.compatVersion, '4.0.0'),
|
||||
v.software === PLEROMA && v.build === REBASED && gte(v.version, '2.5.54'),
|
||||
v.software === DITTO,
|
||||
]),
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue