diff --git a/src/boot/after_store.js b/src/boot/after_store.js index c12c70f1..7fed3bc3 100644 --- a/src/boot/after_store.js +++ b/src/boot/after_store.js @@ -399,6 +399,7 @@ const afterStoreSetup = async ({ store, i18n }) => { getTOS({ store }) getStickers({ store }) store.dispatch('getSupportedTranslationlanguages') + store.dispatch('getSettingsProfile') const router = createRouter({ history: createWebHistory(), diff --git a/src/components/settings_modal/helpers/shared_computed_object.js b/src/components/settings_modal/helpers/shared_computed_object.js index 12431dca..3f40f6e5 100644 --- a/src/components/settings_modal/helpers/shared_computed_object.js +++ b/src/components/settings_modal/helpers/shared_computed_object.js @@ -19,7 +19,7 @@ const SharedComputedObject = () => ({ .map(key => [key, { get () { return this.$store.getters.mergedConfig[key] }, set (value) { - this.$store.dispatch('setOption', { name: key, value }) + this.$store.dispatch('setOption', { name: key, value, manual: true }) } }]) .reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {}), @@ -27,7 +27,7 @@ const SharedComputedObject = () => ({ .map(key => ['serverSide_' + key, { get () { return this.$store.state.serverSideConfig[key] }, set (value) { - this.$store.dispatch('setServerSideOption', { name: key, value }) + this.$store.dispatch('setServerSideOption', { name: key, value, manual: true }) } }]) .reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {}), diff --git a/src/components/settings_modal/tabs/general_tab.js b/src/components/settings_modal/tabs/general_tab.js index 9fe47eaf..c915c32c 100644 --- a/src/components/settings_modal/tabs/general_tab.js +++ b/src/components/settings_modal/tabs/general_tab.js @@ -89,7 +89,7 @@ const GeneralTab = { } }, translationLanguages () { - return (this.$store.getters.mergedConfig.supportedTranslationLanguages.target || []).map(lang => ({ key: lang.code, value: lang.code, label: lang.name })) + return (this.$store.state.instance.supportedTranslationLanguages.target || []).map(lang => ({ key: lang.code, value: lang.code, label: lang.name })) }, translationLanguage: { get: function () { return this.$store.getters.mergedConfig.translationLanguage }, diff --git a/src/modules/api.js b/src/modules/api.js index 6c896c79..fb81d1b3 100644 --- a/src/modules/api.js +++ b/src/modules/api.js @@ -262,10 +262,15 @@ const api = { getSupportedTranslationlanguages (store) { store.state.backendInteractor.getSupportedTranslationlanguages({ store }) .then((data) => { - store.dispatch('setOption', { name: 'supportedTranslationLanguages', value: data }) + store.dispatch('setInstanceOption', { name: 'supportedTranslationLanguages', value: data }) + }) + }, + getSettingsProfile (store) { + store.state.backendInteractor.getSettingsProfile({ store }) + .then((data) => { + console.log('LOADED', data) }) }, - // Pleroma websocket setWsToken (store, token) { store.commit('setWsToken', token) diff --git a/src/modules/config.js b/src/modules/config.js index e0530101..669767b5 100644 --- a/src/modules/config.js +++ b/src/modules/config.js @@ -149,6 +149,7 @@ const config = { mutations: { setOption (state, { name, value }) { state[name] = value + console.log('SETOPTION', JSON.stringify(state)) }, setHighlight (state, { user, color, type }) { const data = this.state.config.highlight[user] @@ -160,6 +161,9 @@ const config = { } }, actions: { + syncSettings: ({ dispatch }) => { + dispatch('syncSettingsToServer') + }, loadSettings ({ dispatch }, data) { const knownKeys = new Set(Object.keys(defaultState)) const presentKeys = new Set(Object.keys(data)) @@ -177,8 +181,11 @@ const config = { setHighlight ({ commit, dispatch }, { user, color, type }) { commit('setHighlight', { user, color, type }) }, - setOption ({ commit, dispatch }, { name, value }) { + setOption ({ commit, dispatch }, { name, value, manual }) { commit('setOption', { name, value }) + if (manual === true) { + dispatch('syncSettingsToServer') + } switch (name) { case 'theme': setPreset(value) diff --git a/src/services/api/api.service.js b/src/services/api/api.service.js index 8c7f80db..0ce7937f 100644 --- a/src/services/api/api.service.js +++ b/src/services/api/api.service.js @@ -102,6 +102,7 @@ const PLEROMA_ANNOUNCEMENTS_URL = '/api/v1/pleroma/admin/announcements' const PLEROMA_POST_ANNOUNCEMENT_URL = '/api/v1/pleroma/admin/announcements' const PLEROMA_EDIT_ANNOUNCEMENT_URL = id => `/api/v1/pleroma/admin/announcements/${id}` const PLEROMA_DELETE_ANNOUNCEMENT_URL = id => `/api/v1/pleroma/admin/announcements/${id}` +const AKKOMA_SETTING_PROFILE_URL = (name) => `/api/v1/akkoma/frontend_settings/pleroma-fe/${name}` const oldfetch = window.fetch @@ -1451,6 +1452,13 @@ const deleteAnnouncement = ({ id, credentials }) => { }) } +const getSettingsProfile = ({ profileName, credentials }) => { + return promisedRequest({ + url: AKKOMA_SETTING_PROFILE_URL(profileName), + credentials + }) +} + export const getMastodonSocketURI = ({ credentials, stream, args = {} }) => { return Object.entries({ ...(credentials @@ -1677,7 +1685,8 @@ const apiService = { deleteAnnouncement, adminFetchAnnouncements, translateStatus, - getSupportedTranslationlanguages + getSupportedTranslationlanguages, + getSettingsProfile } export default apiService