forked from AkkomaGang/akkoma-fe
wire up notification settings
This commit is contained in:
parent
ab34a75bcf
commit
28ca504576
6 changed files with 87 additions and 3 deletions
|
@ -55,7 +55,8 @@ const UserSettings = {
|
||||||
changePasswordInputs: [ '', '', '' ],
|
changePasswordInputs: [ '', '', '' ],
|
||||||
changedPassword: false,
|
changedPassword: false,
|
||||||
changePasswordError: false,
|
changePasswordError: false,
|
||||||
activeTab: 'profile'
|
activeTab: 'profile',
|
||||||
|
notificationSettings: this.$store.state.users.currentUser.notification_settings
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created () {
|
created () {
|
||||||
|
@ -128,6 +129,10 @@ const UserSettings = {
|
||||||
this.$store.commit('setCurrentUser', user)
|
this.$store.commit('setCurrentUser', user)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
updateNotificationSettings () {
|
||||||
|
this.$store.state.api.backendInteractor
|
||||||
|
.updateNotificationSettings({ settings: this.notificationSettings })
|
||||||
|
},
|
||||||
changeVis (visibility) {
|
changeVis (visibility) {
|
||||||
this.newDefaultScope = visibility
|
this.newDefaultScope = visibility
|
||||||
},
|
},
|
||||||
|
|
|
@ -167,6 +167,51 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div :label="$t('settings.interactions_tab')" v-if="pleromaBackend">
|
||||||
|
<div class="setting-item">
|
||||||
|
<h2>{{$t('settings.notifications')}}</h2>
|
||||||
|
<ul class="setting-list">
|
||||||
|
<li>
|
||||||
|
<input type="checkbox" id="notification-setting-local" v-model="notificationSettings.local">
|
||||||
|
<label for="notification-setting-local">
|
||||||
|
{{$t('settings.notification_setting_local')}}
|
||||||
|
</label>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<input type="checkbox" id="notification-setting-remote" v-model="notificationSettings.remote">
|
||||||
|
<label for="notification-setting-remote">
|
||||||
|
{{$t('settings.notification_setting_remote')}}
|
||||||
|
</label>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<input type="checkbox" id="notification-setting-follows" v-model="notificationSettings.follows">
|
||||||
|
<label for="notification-setting-follows">
|
||||||
|
{{$t('settings.notification_setting_follows')}}
|
||||||
|
</label>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<input type="checkbox" id="notification-setting-non-follows" v-model="notificationSettings.non_follows">
|
||||||
|
<label for="notification-setting-non-follows">
|
||||||
|
{{$t('settings.notification_setting_non_follows')}}
|
||||||
|
</label>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<input type="checkbox" id="notification-setting-followers" v-model="notificationSettings.followers">
|
||||||
|
<label for="notification-setting-followers">
|
||||||
|
{{$t('settings.notification_setting_followers')}}
|
||||||
|
</label>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<input type="checkbox" id="notification-setting-non-followers" v-model="notificationSettings.non_followers">
|
||||||
|
<label for="notification-setting-non-followers">
|
||||||
|
{{$t('settings.notification_setting_non_followers')}}
|
||||||
|
</label>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<button class="btn btn-default" @click="updateNotificationSettings">{{$t('general.submit')}}</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div :label="$t('settings.data_import_export_tab')" v-if="pleromaBackend">
|
<div :label="$t('settings.data_import_export_tab')" v-if="pleromaBackend">
|
||||||
<div class="setting-item">
|
<div class="setting-item">
|
||||||
<h2>{{$t('settings.follow_import')}}</h2>
|
<h2>{{$t('settings.follow_import')}}</h2>
|
||||||
|
|
|
@ -209,6 +209,7 @@
|
||||||
"loop_video": "Loop videos",
|
"loop_video": "Loop videos",
|
||||||
"loop_video_silent_only": "Loop only videos without sound (i.e. Mastodon's \"gifs\")",
|
"loop_video_silent_only": "Loop only videos without sound (i.e. Mastodon's \"gifs\")",
|
||||||
"mutes_tab": "Mutes",
|
"mutes_tab": "Mutes",
|
||||||
|
"interactions_tab": "Interactions",
|
||||||
"play_videos_in_modal": "Play videos directly in the media viewer",
|
"play_videos_in_modal": "Play videos directly in the media viewer",
|
||||||
"use_contain_fit": "Don't crop the attachment in thumbnails",
|
"use_contain_fit": "Don't crop the attachment in thumbnails",
|
||||||
"name": "Name",
|
"name": "Name",
|
||||||
|
@ -277,6 +278,12 @@
|
||||||
"true": "yes"
|
"true": "yes"
|
||||||
},
|
},
|
||||||
"notifications": "Notifications",
|
"notifications": "Notifications",
|
||||||
|
"notification_setting_local": "Show notifications from local users",
|
||||||
|
"notification_setting_remote": "Show notifications from remote users",
|
||||||
|
"notification_setting_follows": "Show notifications from users you follow",
|
||||||
|
"notification_setting_non_follows": "Show notifications from users you do not follow",
|
||||||
|
"notification_setting_followers": "Show notifications from users who follow you",
|
||||||
|
"notification_setting_non_followers": "Show notifications from users who do not follow you",
|
||||||
"enable_web_push_notifications": "Enable web push notifications",
|
"enable_web_push_notifications": "Enable web push notifications",
|
||||||
"style": {
|
"style": {
|
||||||
"switcher": {
|
"switcher": {
|
||||||
|
|
|
@ -16,6 +16,7 @@ const PERMISSION_GROUP_URL = (screenName, right) => `/api/pleroma/admin/users/${
|
||||||
const ACTIVATION_STATUS_URL = screenName => `/api/pleroma/admin/users/${screenName}/activation_status`
|
const ACTIVATION_STATUS_URL = screenName => `/api/pleroma/admin/users/${screenName}/activation_status`
|
||||||
const ADMIN_USERS_URL = '/api/pleroma/admin/users'
|
const ADMIN_USERS_URL = '/api/pleroma/admin/users'
|
||||||
const SUGGESTIONS_URL = '/api/v1/suggestions'
|
const SUGGESTIONS_URL = '/api/v1/suggestions'
|
||||||
|
const NOTIFICATION_SETTINGS_URL = '/api/pleroma/notification_settings'
|
||||||
|
|
||||||
const MASTODON_USER_FAVORITES_TIMELINE_URL = '/api/v1/favourites'
|
const MASTODON_USER_FAVORITES_TIMELINE_URL = '/api/v1/favourites'
|
||||||
const MASTODON_USER_NOTIFICATIONS_URL = '/api/v1/notifications'
|
const MASTODON_USER_NOTIFICATIONS_URL = '/api/v1/notifications'
|
||||||
|
@ -97,6 +98,21 @@ const promisedRequest = ({ method, url, payload, credentials, headers = {} }) =>
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const updateNotificationSettings = ({credentials, settings}) => {
|
||||||
|
const form = new FormData()
|
||||||
|
|
||||||
|
each(settings, (value, key) => {
|
||||||
|
form.append(key, value)
|
||||||
|
})
|
||||||
|
|
||||||
|
return fetch(NOTIFICATION_SETTINGS_URL, {
|
||||||
|
headers: authHeaders(credentials),
|
||||||
|
method: 'PUT',
|
||||||
|
body: form
|
||||||
|
})
|
||||||
|
.then((data) => data.json())
|
||||||
|
}
|
||||||
|
|
||||||
const updateAvatar = ({credentials, avatar}) => {
|
const updateAvatar = ({credentials, avatar}) => {
|
||||||
const form = new FormData()
|
const form = new FormData()
|
||||||
form.append('avatar', avatar)
|
form.append('avatar', avatar)
|
||||||
|
@ -767,7 +783,8 @@ const apiService = {
|
||||||
markNotificationsAsSeen,
|
markNotificationsAsSeen,
|
||||||
fetchFavoritedByUsers,
|
fetchFavoritedByUsers,
|
||||||
fetchRebloggedByUsers,
|
fetchRebloggedByUsers,
|
||||||
reportUser
|
reportUser,
|
||||||
|
updateNotificationSettings
|
||||||
}
|
}
|
||||||
|
|
||||||
export default apiService
|
export default apiService
|
||||||
|
|
|
@ -87,6 +87,10 @@ const backendInteractorService = (credentials) => {
|
||||||
return apiService.deleteUser({screen_name, credentials})
|
return apiService.deleteUser({screen_name, credentials})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const updateNotificationSettings = ({settings}) => {
|
||||||
|
return apiService.updateNotificationSettings({credentials, settings})
|
||||||
|
}
|
||||||
|
|
||||||
const fetchMutes = () => apiService.fetchMutes({credentials})
|
const fetchMutes = () => apiService.fetchMutes({credentials})
|
||||||
const muteUser = (id) => apiService.muteUser({credentials, id})
|
const muteUser = (id) => apiService.muteUser({credentials, id})
|
||||||
const unmuteUser = (id) => apiService.unmuteUser({credentials, id})
|
const unmuteUser = (id) => apiService.unmuteUser({credentials, id})
|
||||||
|
@ -171,7 +175,8 @@ const backendInteractorService = (credentials) => {
|
||||||
favorite,
|
favorite,
|
||||||
unfavorite,
|
unfavorite,
|
||||||
retweet,
|
retweet,
|
||||||
unretweet
|
unretweet,
|
||||||
|
updateNotificationSettings
|
||||||
}
|
}
|
||||||
|
|
||||||
return backendInteractorServiceInstance
|
return backendInteractorServiceInstance
|
||||||
|
|
|
@ -141,8 +141,13 @@ export const parseUser = (data) => {
|
||||||
output.deactivated = data.pleroma.deactivated
|
output.deactivated = data.pleroma.deactivated
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (data.pleroma) {
|
||||||
|
output.notification_settings = data.pleroma.notification_settings
|
||||||
|
}
|
||||||
|
|
||||||
output.tags = output.tags || []
|
output.tags = output.tags || []
|
||||||
output.rights = output.rights || {}
|
output.rights = output.rights || {}
|
||||||
|
output.notification_settings = output.notification_settings || {}
|
||||||
|
|
||||||
return output
|
return output
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue