From 466801f4dbfcf17c5e930d8aec3a454fd3b35cb7 Mon Sep 17 00:00:00 2001 From: luce Date: Thu, 7 Aug 2025 11:09:52 +0200 Subject: [PATCH] type check for status prop --- .../settings_modal/admin_tabs/admin_card.js | 255 +++++++++--------- 1 file changed, 134 insertions(+), 121 deletions(-) diff --git a/src/components/settings_modal/admin_tabs/admin_card.js b/src/components/settings_modal/admin_tabs/admin_card.js index 74ee57e99..e940b81f1 100644 --- a/src/components/settings_modal/admin_tabs/admin_card.js +++ b/src/components/settings_modal/admin_tabs/admin_card.js @@ -4,130 +4,143 @@ import PageList from 'src/components/page_list/page_list.vue' import AdminStatusCard from 'src/components/settings_modal/admin_tabs/admin_status_card.vue' const AdminCard = { - props: ['userDetails'], - data () { - return { - progress: false, - topLevelExpanded: false, - jsonExpanded: false, - timelineExpanded: false, - justApproved: false, - justConfirmed: false, - justDeleted: false, + props: { + userDetails: { + type: Object, + required: true, + validator (u) { + return ( + typeof(u.id) === 'string' && + typeof(u._original) === 'object' && + typeof(u._original.is_approved) === 'boolean' && + typeof(u._original.is_confirmed) === 'boolean' + ) } - }, - computed: { - isLoaded () { - return typeof(this.user) !== 'undefined' - }, - user () { - return this.$store.getters.findUser(this.userDetails.id) - }, - relationship () { - return this.$store.getters.relationship(this.userDetails.id) - }, - isLocal () { - const u = this.$store.getters.findUser(this.userDetails.id) - if (typeof(u) !== 'undefined') { - return u.is_local === true - } - return false - }, - isAdmin () { - const u = this.$store.getters.findUser(this.userDetails.id) - if (typeof(u) !== 'undefined') { - return u.rights.admin === true - } - return false - }, - isModerator () { - const u = this.$store.getters.findUser(this.userDetails.id) - if (typeof(u) !== 'undefined') { - return u.rights.moderator === true - } - return false - }, - isActivated () { - const u = this.$store.getters.findUser(this.userDetails.id) - if (typeof(u) !== 'undefined') { - return u.deactivated === false - } - return false - }, - isConfirmed () { - const u = this.$store.getters.findUser(this.userDetails.id) - return (u._original.pleroma.is_confirmed === true) || (this.justConfirmed === true) - }, - isApproved () { - return (this.userDetails._original.is_approved === true) || (this.justApproved === true) + } + }, + data () { + return { + progress: false, + topLevelExpanded: false, + jsonExpanded: false, + timelineExpanded: false, + justApproved: false, + justConfirmed: false, + justDeleted: false, + } + }, + computed: { + isLoaded () { + return typeof(this.user) !== 'undefined' + }, + user () { + return this.$store.getters.findUser(this.userDetails.id) + }, + relationship () { + return this.$store.getters.relationship(this.userDetails.id) + }, + isLocal () { + const u = this.$store.getters.findUser(this.userDetails.id) + if (typeof(u) !== 'undefined') { + return u.is_local === true } - }, - components: { - BasicUserCard, - Checkbox, - PageList, - AdminStatusCard, - }, - methods: { - toggleAdmin (v) { - const u = this.$store.getters.findUser(this.userDetails.id) - if (v === true) { - this.$store.dispatch('adminAddUserToAdminGroup', u) - } else { - this.$store.dispatch('adminRemoveUserFromAdminGroup', u) - } - }, - toggleModerator (v) { - const u = this.$store.getters.findUser(this.userDetails.id) - if (v === true) { - this.$store.dispatch('adminAddUserToModeratorGroup', u) - } else { - this.$store.dispatch('adminRemoveUserFromModeratorGroup', u) - } - }, - toggleActivation (v) { - const u = this.$store.getters.findUser(this.userDetails.id) - if (v === true) { - this.$store.dispatch('adminActivateUser', u) - } else { - this.$store.dispatch('adminDeactivateUser', u) - } - }, - confirmUser () { - const u = this.$store.getters.findUser(this.userDetails.id) - this.$store.dispatch('adminConfirmUser', u) - this.just_confirmed = true - }, - resendConfirmationEmail () { - const u = this.$store.getters.findUser(this.userDetails.id) - this.$store.dispatch('adminResendConfirmationEmail', u) - }, - toggleApproval () { - const u = this.$store.getters.findUser(this.userDetails.id) - this.$store.dispatch('adminApproveUser', u) - }, - forceUpdateUser () { - this.$store.dispatch('fetchUser', this.userDetails.id) - }, - deleteSelection () { - const l = this.$refs.timelineList - const s = l.getSelected() - s.forEach(p => this.$store.dispatch('deleteStatus', p)) - l.reset() - }, - deleteUser () { - if (!this.justDeleted) { - const u = this.$store.getters.findUser(this.userDetails.id) - this.$store.dispatch('adminDeleteUser', u) - this.justDeleted = true - } - }, - fetchStatuses (store, opts) { - const u = this.$store.getters.findUser(this.userDetails.id) - const res = store.dispatch('adminListStatuses', { user: u, opts: { pageSize: opts.pageSize, godmode: true, withReblogs: true}}) - return Promise.resolve(res.then(r => r.activities)) + return false + }, + isAdmin () { + const u = this.$store.getters.findUser(this.userDetails.id) + if (typeof(u) !== 'undefined') { + return u.rights.admin === true } - } + return false + }, + isModerator () { + const u = this.$store.getters.findUser(this.userDetails.id) + if (typeof(u) !== 'undefined') { + return u.rights.moderator === true + } + return false + }, + isActivated () { + const u = this.$store.getters.findUser(this.userDetails.id) + if (typeof(u) !== 'undefined') { + return u.deactivated === false + } + return false + }, + isConfirmed () { + const u = this.$store.getters.findUser(this.userDetails.id) + return (u._original.is_confirmed === true) || (this.justConfirmed === true) + }, + isApproved () { + return (this.userDetails._original.is_approved === true) || (this.justApproved === true) + } + }, + components: { + BasicUserCard, + Checkbox, + PageList, + AdminStatusCard, + }, + methods: { + toggleAdmin (v) { + const u = this.$store.getters.findUser(this.userDetails.id) + if (v === true) { + this.$store.dispatch('adminAddUserToAdminGroup', u) + } else { + this.$store.dispatch('adminRemoveUserFromAdminGroup', u) + } + }, + toggleModerator (v) { + const u = this.$store.getters.findUser(this.userDetails.id) + if (v === true) { + this.$store.dispatch('adminAddUserToModeratorGroup', u) + } else { + this.$store.dispatch('adminRemoveUserFromModeratorGroup', u) + } + }, + toggleActivation (v) { + const u = this.$store.getters.findUser(this.userDetails.id) + if (v === true) { + this.$store.dispatch('adminActivateUser', u) + } else { + this.$store.dispatch('adminDeactivateUser', u) + } + }, + confirmUser () { + const u = this.$store.getters.findUser(this.userDetails.id) + this.$store.dispatch('adminConfirmUser', u) + this.just_confirmed = true + }, + resendConfirmationEmail () { + const u = this.$store.getters.findUser(this.userDetails.id) + this.$store.dispatch('adminResendConfirmationEmail', u) + }, + toggleApproval () { + const u = this.$store.getters.findUser(this.userDetails.id) + this.$store.dispatch('adminApproveUser', u) + }, + forceUpdateUser () { + this.$store.dispatch('fetchUser', this.userDetails.id) + }, + deleteSelection () { + const l = this.$refs.timelineList + const s = l.getSelected() + s.forEach(p => this.$store.dispatch('deleteStatus', p)) + l.reset() + }, + deleteUser () { + if (!this.justDeleted) { + const u = this.$store.getters.findUser(this.userDetails.id) + this.$store.dispatch('adminDeleteUser', u) + this.justDeleted = true + } + }, + fetchStatuses (store, opts) { + const u = this.$store.getters.findUser(this.userDetails.id) + const res = store.dispatch('adminListStatuses', { user: u, opts: { pageSize: opts.pageSize, godmode: true, withReblogs: true}}) + return Promise.resolve(res.then(r => r.activities)) + } + } } export default AdminCard