diff --git a/frontend/src/components/discovery/MergeConfirmDialog.vue b/frontend/src/components/discovery/MergeConfirmDialog.vue new file mode 100644 index 0000000..c253746 --- /dev/null +++ b/frontend/src/components/discovery/MergeConfirmDialog.vue @@ -0,0 +1,40 @@ + + + diff --git a/frontend/src/components/discovery/TagCard.vue b/frontend/src/components/discovery/TagCard.vue index 8438dd2..b841ec2 100644 --- a/frontend/src/components/discovery/TagCard.vue +++ b/frontend/src/components/discovery/TagCard.vue @@ -1,5 +1,5 @@ diff --git a/frontend/src/views/TagsView.vue b/frontend/src/views/TagsView.vue index c82a018..8381763 100644 --- a/frontend/src/views/TagsView.vue +++ b/frontend/src/views/TagsView.vue @@ -25,7 +25,8 @@
@@ -33,6 +34,13 @@
+ + @@ -41,6 +49,7 @@ import { ref, watch, onMounted, onUnmounted } from 'vue' import { useRouter } from 'vue-router' import { useTagDirectoryStore } from '../stores/tagDirectory.js' import TagCard from '../components/discovery/TagCard.vue' +import MergeConfirmDialog from '../components/discovery/MergeConfirmDialog.vue' const KINDS = ['artist', 'character', 'copyright', 'general', 'series', 'meta'] const store = useTagDirectoryStore() @@ -49,6 +58,18 @@ const router = useRouter() const search = ref('') const kind = ref(null) const sentinelEl = ref(null) +const pendingMerge = ref(null) + +async function onRename({ id, name }) { + const res = await store.rename(id, name) + if (res.collision) pendingMerge.value = res.collision +} + +async function confirmMerge() { + const c = pendingMerge.value + pendingMerge.value = null + if (c) await store.merge(c.sourceId, c.target.id) +} let debounce = null watch(search, (v) => {