-
-
diff --git a/front/src/components/library/EditForm.vue b/front/src/components/library/EditForm.vue
index 48e3103b9..3543add6a 100644
--- a/front/src/components/library/EditForm.vue
+++ b/front/src/components/library/EditForm.vue
@@ -249,7 +249,8 @@ import AttachmentInput from '~/components/common/AttachmentInput.vue'
import EditList from '~/components/library/EditList.vue'
import EditCard from '~/components/library/EditCard.vue'
import TagsSelector from '~/components/library/TagsSelector.vue'
-import edits from '~/edits.js'
+import useEditConfigs from '~/composables/useEditConfigs'
+import { computed } from 'vue/dist/vue'
export default {
components: {
@@ -263,6 +264,16 @@ export default {
object: { type: Object, required: true },
licenses: { type: Array, required: true }
},
+ setup (props) {
+ const configs = useEditConfigs()
+ const config = computed(() => configs[props.objectType])
+ const currentState = computed(() => config.value.fields.reduce((state/*: Record */, field) => {
+ state[field.id] = { value: field.getValue(props.object) }
+ return state
+ }, {}))
+
+ return { config, currentState, configs }
+ },
data () {
return {
isLoading: false,
@@ -275,10 +286,15 @@ export default {
}
},
computed: {
- configs: edits.getConfigs,
- config: edits.getConfig,
- currentState: edits.getCurrentState,
- canEdit: edits.getCanEdit,
+ canEdit () {
+ if (!this.$store.state.auth.authenticated) return false
+
+ const isOwner = this.object.attributed_to &&
+ // TODO (wvffle): Is it better to compare ids? Is full_username unique?
+ this.$store.state.auth.fullUsername === this.object.attributed_to.full_username
+
+ return isOwner || this.$store.state.auth.availablePermissions.library
+ },
labels () {
return {
summaryPlaceholder: this.$pgettext('*/*/Placeholder', 'A short summary describing your changes.')
diff --git a/front/src/components/library/Podcasts.vue b/front/src/components/library/Podcasts.vue
index 54121fb23..10a0e7e57 100644
--- a/front/src/components/library/Podcasts.vue
+++ b/front/src/components/library/Podcasts.vue
@@ -207,7 +207,7 @@ import TagsSelector from '~/components/library/TagsSelector.vue'
import Modal from '~/components/semantic/Modal.vue'
import RemoteSearchForm from '~/components/RemoteSearchForm.vue'
import useLogger from '~/composables/useLogger'
-import useSharedLabels from '../../composables/useSharedLabels'
+import useSharedLabels from '~/composables/locale/useSharedLabels'
const logger = useLogger()
diff --git a/front/src/components/library/Radios.vue b/front/src/components/library/Radios.vue
index 2593a5ceb..9449c51a0 100644
--- a/front/src/components/library/Radios.vue
+++ b/front/src/components/library/Radios.vue
@@ -182,7 +182,7 @@ import PaginationMixin from '~/components/mixins/Pagination.vue'
import RadioCard from '~/components/radios/Card.vue'
import Pagination from '~/components/Pagination.vue'
import useLogger from '~/composables/useLogger'
-import useSharedLabels from '../../composables/useSharedLabels'
+import useSharedLabels from '~/composables/locale/useSharedLabels'
const logger = useLogger()
diff --git a/front/src/components/manage/ChannelsTable.vue b/front/src/components/manage/ChannelsTable.vue
index 524f294b7..d92b85c82 100644
--- a/front/src/components/manage/ChannelsTable.vue
+++ b/front/src/components/manage/ChannelsTable.vue
@@ -202,12 +202,12 @@
import axios from 'axios'
import { merge } from 'lodash-es'
import time from '~/utils/time'
-import { normalizeQuery, parseTokens } from '~/search'
+import { normalizeQuery, parseTokens } from '~/utils/search'
import Pagination from '~/components/Pagination.vue'
import ActionTable from '~/components/common/ActionTable.vue'
import OrderingMixin from '~/components/mixins/Ordering.vue'
import SmartSearchMixin from '~/components/mixins/SmartSearch.vue'
-import useSharedLabels from '../../composables/useSharedLabels'
+import useSharedLabels from '~/composables/locale/useSharedLabels'
export default {
components: {
diff --git a/front/src/components/manage/library/AlbumsTable.vue b/front/src/components/manage/library/AlbumsTable.vue
index 914d0414b..43c9bb586 100644
--- a/front/src/components/manage/library/AlbumsTable.vue
+++ b/front/src/components/manage/library/AlbumsTable.vue
@@ -187,12 +187,12 @@
import axios from 'axios'
import { merge } from 'lodash-es'
import time from '~/utils/time'
-import { normalizeQuery, parseTokens } from '~/search'
+import { normalizeQuery, parseTokens } from '~/utils/search'
import Pagination from '~/components/Pagination.vue'
import ActionTable from '~/components/common/ActionTable.vue'
import OrderingMixin from '~/components/mixins/Ordering.vue'
import SmartSearchMixin from '~/components/mixins/SmartSearch.vue'
-import useSharedLabels from '../../../composables/useSharedLabels'
+import useSharedLabels from '~/composables/locale/useSharedLabels'
export default {
components: {
diff --git a/front/src/components/manage/library/ArtistsTable.vue b/front/src/components/manage/library/ArtistsTable.vue
index fdbe729b2..2e2021b20 100644
--- a/front/src/components/manage/library/ArtistsTable.vue
+++ b/front/src/components/manage/library/ArtistsTable.vue
@@ -186,12 +186,12 @@
import axios from 'axios'
import { merge } from 'lodash-es'
import time from '~/utils/time'
-import { normalizeQuery, parseTokens } from '~/search'
+import { normalizeQuery, parseTokens } from '~/utils/search'
import Pagination from '~/components/Pagination.vue'
import ActionTable from '~/components/common/ActionTable.vue'
import OrderingMixin from '~/components/mixins/Ordering.vue'
import SmartSearchMixin from '~/components/mixins/SmartSearch.vue'
-import useSharedLabels from '../../../composables/useSharedLabels'
+import useSharedLabels from '~/composables/locale/useSharedLabels'
export default {
components: {
diff --git a/front/src/components/manage/library/EditsCardList.vue b/front/src/components/manage/library/EditsCardList.vue
index 9266fa565..cee8027f8 100644
--- a/front/src/components/manage/library/EditsCardList.vue
+++ b/front/src/components/manage/library/EditsCardList.vue
@@ -136,11 +136,11 @@ import time from '~/utils/time'
import Pagination from '~/components/Pagination.vue'
import OrderingMixin from '~/components/mixins/Ordering.vue'
import EditCard from '~/components/library/EditCard.vue'
-import { normalizeQuery, parseTokens } from '~/search'
+import { normalizeQuery, parseTokens } from '~/utils/search'
import SmartSearchMixin from '~/components/mixins/SmartSearch.vue'
-import edits from '~/edits'
-import useSharedLabels from '../../../composables/useSharedLabels'
+import useEditConfigs from '~/composables/useEditConfigs'
+import useSharedLabels from '~/composables/locale/useSharedLabels'
export default {
components: {
@@ -153,7 +153,8 @@ export default {
},
setup () {
const sharedLabels = useSharedLabels()
- return { sharedLabels }
+ const configs = useEditConfigs()
+ return { sharedLabels, configs }
},
data () {
return {
@@ -244,7 +245,10 @@ export default {
response.data.results.forEach((e) => {
self.targets[k][e.id] = {
payload: e,
- currentState: edits.getCurrentStateForObj(e, edits.getConfigs.bind(self)()[k])
+ currentState: configs[k].fields.reduce((state/*: Record */, field) => {
+ state[field.id] = { value: field.getValue(e) }
+ return state
+ }, {})
}
})
}, error => {
diff --git a/front/src/components/manage/library/LibrariesTable.vue b/front/src/components/manage/library/LibrariesTable.vue
index 55c1cf241..67d76968a 100644
--- a/front/src/components/manage/library/LibrariesTable.vue
+++ b/front/src/components/manage/library/LibrariesTable.vue
@@ -217,12 +217,12 @@
import axios from 'axios'
import { merge } from 'lodash-es'
import time from '~/utils/time'
-import { normalizeQuery, parseTokens } from '~/search'
+import { normalizeQuery, parseTokens } from '~/utils/search'
import Pagination from '~/components/Pagination.vue'
import ActionTable from '~/components/common/ActionTable.vue'
import OrderingMixin from '~/components/mixins/Ordering.vue'
import SmartSearchMixin from '~/components/mixins/SmartSearch.vue'
-import useSharedLabels from '../../../composables/useSharedLabels'
+import useSharedLabels from '~/composables/locale/useSharedLabels'
export default {
components: {
diff --git a/front/src/components/manage/library/TagsTable.vue b/front/src/components/manage/library/TagsTable.vue
index e2f3ed821..47dc00296 100644
--- a/front/src/components/manage/library/TagsTable.vue
+++ b/front/src/components/manage/library/TagsTable.vue
@@ -148,14 +148,14 @@
import axios from 'axios'
import { merge } from 'lodash-es'
import time from '~/utils/time'
-import { normalizeQuery, parseTokens } from '~/search'
+import { normalizeQuery, parseTokens } from '~/utils/search'
import Pagination from '~/components/Pagination.vue'
import ActionTable from '~/components/common/ActionTable.vue'
import OrderingMixin from '~/components/mixins/Ordering.vue'
import SmartSearchMixin from '~/components/mixins/SmartSearch.vue'
import ImportStatusModal from '~/components/library/ImportStatusModal.vue'
import { truncate } from '~/utils/filters'
-import useSharedLabels from '../../../composables/useSharedLabels'
+import useSharedLabels from '~/composables/locale/useSharedLabels'
export default {
components: {
diff --git a/front/src/components/manage/library/TracksTable.vue b/front/src/components/manage/library/TracksTable.vue
index 880417d94..5dd65bc16 100644
--- a/front/src/components/manage/library/TracksTable.vue
+++ b/front/src/components/manage/library/TracksTable.vue
@@ -200,12 +200,12 @@
import axios from 'axios'
import { merge } from 'lodash-es'
import time from '~/utils/time'
-import { normalizeQuery, parseTokens } from '~/search'
+import { normalizeQuery, parseTokens } from '~/utils/search'
import Pagination from '~/components/Pagination.vue'
import ActionTable from '~/components/common/ActionTable.vue'
import OrderingMixin from '~/components/mixins/Ordering.vue'
import SmartSearchMixin from '~/components/mixins/SmartSearch.vue'
-import useSharedLabels from '../../../composables/useSharedLabels'
+import useSharedLabels from '~/composables/locale/useSharedLabels'
export default {
components: {
diff --git a/front/src/components/manage/library/UploadsTable.vue b/front/src/components/manage/library/UploadsTable.vue
index 1f5fc7d54..102e0d6f1 100644
--- a/front/src/components/manage/library/UploadsTable.vue
+++ b/front/src/components/manage/library/UploadsTable.vue
@@ -309,14 +309,14 @@
import axios from 'axios'
import { merge } from 'lodash-es'
import time from '~/utils/time'
-import { normalizeQuery, parseTokens } from '~/search'
+import { normalizeQuery, parseTokens } from '~/utils/search'
import Pagination from '~/components/Pagination.vue'
import ActionTable from '~/components/common/ActionTable.vue'
import OrderingMixin from '~/components/mixins/Ordering.vue'
import SmartSearchMixin from '~/components/mixins/SmartSearch.vue'
import ImportStatusModal from '~/components/library/ImportStatusModal.vue'
import { humanSize, truncate } from '~/utils/filters'
-import useSharedLabels from '../../../composables/useSharedLabels'
+import useSharedLabels from '~/composables/locale/useSharedLabels'
export default {
components: {
diff --git a/front/src/components/manage/moderation/AccountsTable.vue b/front/src/components/manage/moderation/AccountsTable.vue
index 30f9f4dbc..9c82c81e8 100644
--- a/front/src/components/manage/moderation/AccountsTable.vue
+++ b/front/src/components/manage/moderation/AccountsTable.vue
@@ -173,12 +173,12 @@
import axios from 'axios'
import { merge } from 'lodash-es'
import time from '~/utils/time'
-import { normalizeQuery, parseTokens } from '~/search'
+import { normalizeQuery, parseTokens } from '~/utils/search'
import Pagination from '~/components/Pagination.vue'
import ActionTable from '~/components/common/ActionTable.vue'
import OrderingMixin from '~/components/mixins/Ordering.vue'
import SmartSearchMixin from '~/components/mixins/SmartSearch.vue'
-import useSharedLabels from '../../../composables/useSharedLabels'
+import useSharedLabels from '~/composables/locale/useSharedLabels'
export default {
components: {
diff --git a/front/src/components/manage/moderation/DomainsTable.vue b/front/src/components/manage/moderation/DomainsTable.vue
index 9669d56ef..3de61a838 100644
--- a/front/src/components/manage/moderation/DomainsTable.vue
+++ b/front/src/components/manage/moderation/DomainsTable.vue
@@ -187,7 +187,7 @@ import time from '~/utils/time'
import Pagination from '~/components/Pagination.vue'
import ActionTable from '~/components/common/ActionTable.vue'
import OrderingMixin from '~/components/mixins/Ordering.vue'
-import useSharedLabels from '../../../composables/useSharedLabels'
+import useSharedLabels from '~/composables/locale/useSharedLabels'
export default {
components: {
diff --git a/front/src/components/manage/moderation/ReportCard.vue b/front/src/components/manage/moderation/ReportCard.vue
index 0bf1dd29d..30f4c4504 100644
--- a/front/src/components/manage/moderation/ReportCard.vue
+++ b/front/src/components/manage/moderation/ReportCard.vue
@@ -396,7 +396,7 @@ import NoteForm from '~/components/manage/moderation/NoteForm.vue'
import NotesThread from '~/components/manage/moderation/NotesThread.vue'
import ReportCategoryDropdown from '~/components/moderation/ReportCategoryDropdown.vue'
import InstancePolicyModal from '~/components/manage/moderation/InstancePolicyModal.vue'
-import entities from '~/entities'
+import useReportConfigs from '~/composables/moderation/useReportConfigs.ts'
import { setUpdate } from '~/utils'
import showdown from 'showdown'
@@ -418,6 +418,9 @@ export default {
initObj: { type: Object, required: true },
currentState: { type: String, required: false, default: '' }
},
+ setup () {
+ return { configs: useReportConfigs() }
+ },
data () {
return {
obj: this.initObj,
@@ -430,7 +433,6 @@ export default {
}
},
computed: {
- configs: entities.getConfigs,
previousState () {
if (this.obj.is_applied) {
// mutation was applied, we use the previous state that is stored
@@ -466,15 +468,13 @@ export default {
const payload = this.obj.target_state
const fields = this.configs[this.target.type].moderatedFields
return fields.map((fieldConfig) => {
- const dummyRepr = (v) => { return v }
- const getValueRepr = fieldConfig.getValueRepr || dummyRepr
- const d = {
+ const getValueRepr = fieldConfig.getValueRepr ?? (i => i)
+ return {
id: fieldConfig.id,
label: fieldConfig.label,
value: payload[fieldConfig.id],
repr: castValue(getValueRepr(payload[fieldConfig.id]))
}
- return d
})
},
target () {
diff --git a/front/src/components/manage/users/InvitationsTable.vue b/front/src/components/manage/users/InvitationsTable.vue
index 1bbc877ca..f3278652c 100644
--- a/front/src/components/manage/users/InvitationsTable.vue
+++ b/front/src/components/manage/users/InvitationsTable.vue
@@ -161,7 +161,7 @@ import { merge } from 'lodash-es'
import Pagination from '~/components/Pagination.vue'
import ActionTable from '~/components/common/ActionTable.vue'
import OrderingMixin from '~/components/mixins/Ordering.vue'
-import useSharedLabels from '../../../composables/useSharedLabels'
+import useSharedLabels from '~/composables/locale/useSharedLabels'
export default {
components: {
diff --git a/front/src/components/manage/users/UsersTable.vue b/front/src/components/manage/users/UsersTable.vue
index ac5db61ea..627e6759a 100644
--- a/front/src/components/manage/users/UsersTable.vue
+++ b/front/src/components/manage/users/UsersTable.vue
@@ -204,7 +204,7 @@ import time from '~/utils/time'
import Pagination from '~/components/Pagination.vue'
import ActionTable from '~/components/common/ActionTable.vue'
import OrderingMixin from '~/components/mixins/Ordering.vue'
-import useSharedLabels from '../../../composables/useSharedLabels'
+import useSharedLabels from '~/composables/locale/useSharedLabels'
export default {
components: {
diff --git a/front/src/components/mixins/SmartSearch.vue b/front/src/components/mixins/SmartSearch.vue
index 4eec45e73..97e308ed6 100644
--- a/front/src/components/mixins/SmartSearch.vue
+++ b/front/src/components/mixins/SmartSearch.vue
@@ -1,6 +1,6 @@