feat: implement standardized protocol
Signed-off-by: Sebastian <krupinski01@gmail.com>
This commit is contained in:
@@ -140,12 +140,12 @@ const handleCreate = async () => {
|
||||
properties.subscribed = true
|
||||
|
||||
// Create the collection
|
||||
const newFolder = await collectionsStore.createCollection({
|
||||
provider: props.service.provider,
|
||||
service: props.service.identifier,
|
||||
collection: props.parentFolder?.identifier ?? null,
|
||||
properties: properties
|
||||
})
|
||||
const newFolder = await collectionsStore.create(
|
||||
props.service.provider,
|
||||
props.service.identifier as string | number,
|
||||
props.parentFolder?.identifier ?? null,
|
||||
properties
|
||||
)
|
||||
|
||||
// Success!
|
||||
emit('created', newFolder)
|
||||
|
||||
@@ -33,9 +33,7 @@ const { settings } = useUser()
|
||||
|
||||
// Folder view mode from user settings
|
||||
const folderViewMode = computed(() => {
|
||||
const allSettings = settings.value?.all || {}
|
||||
const mailSettings = allSettings.mail || {}
|
||||
return (mailSettings.folderViewMode as FolderViewMode) || 'tree'
|
||||
return (settings.value.get('mail.folderViewMode') as FolderViewMode) || 'tree'
|
||||
})
|
||||
|
||||
// Create folder dialog state
|
||||
@@ -112,7 +110,7 @@ const serviceGroups = computed(() => {
|
||||
}> = []
|
||||
|
||||
servicesStore.services.forEach(service => {
|
||||
const folders = collectionsStore.collectionList.filter(
|
||||
const folders = collectionsStore.collections.filter(
|
||||
c => c.provider === service.provider && String(c.service) === String(service.identifier)
|
||||
)
|
||||
|
||||
|
||||
@@ -131,11 +131,11 @@ const saveDraft = async () => {
|
||||
provider: props.folder.provider,
|
||||
service: props.folder.service,
|
||||
collection: props.folder.identifier, // Should be drafts folder ID
|
||||
data: draftData,
|
||||
properties: draftData,
|
||||
})
|
||||
|
||||
if (response && response.entity) {
|
||||
draftId.value = response.entity.identifier
|
||||
if (response) {
|
||||
draftId.value = String(response.identifier)
|
||||
}
|
||||
|
||||
lastSaved.value = new Date()
|
||||
@@ -187,7 +187,7 @@ const handleSend = async () => {
|
||||
sending.value = true
|
||||
|
||||
try {
|
||||
await entityService.send({
|
||||
await entityService.transmit({
|
||||
message: {
|
||||
to: to.value,
|
||||
cc: cc.value.length > 0 ? cc.value : undefined,
|
||||
@@ -203,7 +203,7 @@ const handleSend = async () => {
|
||||
// Delete draft if it was saved
|
||||
if (draftId.value && props.folder) {
|
||||
try {
|
||||
await entityService.destroy({
|
||||
await entityService.delete({
|
||||
provider: props.folder.provider,
|
||||
service: props.folder.service,
|
||||
collection: props.folder.identifier,
|
||||
|
||||
@@ -12,9 +12,7 @@ const compactMode = ref(false)
|
||||
|
||||
const folderViewMode = computed({
|
||||
get: () => {
|
||||
const allSettings = settings.value?.all || {}
|
||||
const mailSettings = allSettings.mail || {}
|
||||
return (mailSettings.folderViewMode as FolderViewMode) || 'tree'
|
||||
return (settings.value.get('mail.folderViewMode') as FolderViewMode) || 'tree'
|
||||
},
|
||||
set: (value: FolderViewMode) => setSetting('mail.folderViewMode', value)
|
||||
})
|
||||
|
||||
@@ -56,10 +56,10 @@ onMounted(async () => {
|
||||
await servicesStore.list()
|
||||
|
||||
// Load collections (folders)
|
||||
await collectionsStore.loadCollections()
|
||||
await collectionsStore.list()
|
||||
|
||||
// Select inbox by default if available
|
||||
const inbox = collectionsStore.collectionList.find(c => c.properties.role === 'inbox')
|
||||
const inbox = collectionsStore.collections.find(c => c.properties.role === 'inbox')
|
||||
if (inbox) {
|
||||
handleFolderSelect(inbox)
|
||||
}
|
||||
@@ -91,7 +91,7 @@ watch(
|
||||
// Add inbox for each service to get notifications
|
||||
servicesStore.services.forEach(service => {
|
||||
// Find inbox collection for this service
|
||||
const inboxes = collectionsStore.collectionList.filter(
|
||||
const inboxes = collectionsStore.collections.filter(
|
||||
c => c.service === service.identifier &&
|
||||
(c.properties.role === 'inbox' ||
|
||||
String(c.identifier).toLowerCase() === 'inbox')
|
||||
@@ -100,7 +100,7 @@ watch(
|
||||
if (inboxes.length > 0) {
|
||||
mailSync.addSource({
|
||||
provider: service.provider,
|
||||
service: service.identifier,
|
||||
service: service.identifier as string | number,
|
||||
collections: inboxes.map(inbox => inbox.identifier),
|
||||
})
|
||||
}
|
||||
@@ -122,7 +122,7 @@ const handleFolderSelect = async (folder: CollectionObject) => {
|
||||
|
||||
// Load messages for this folder
|
||||
try {
|
||||
await entitiesStore.loadMessages({
|
||||
await entitiesStore.list({
|
||||
[folder.provider]: {
|
||||
[folder.service]: {
|
||||
[folder.identifier]: true
|
||||
@@ -188,19 +188,18 @@ const handleFolderCreated = (folder: CollectionObject) => {
|
||||
snackbarVisible.value = true
|
||||
|
||||
// Reload collections to ensure UI is in sync
|
||||
collectionsStore.loadCollections()
|
||||
collectionsStore.list()
|
||||
}
|
||||
|
||||
// Messages for current folder
|
||||
const currentMessages = computed(() => {
|
||||
if (!selectedFolder.value) return []
|
||||
|
||||
const provider = selectedFolder.value.provider
|
||||
const service = String(selectedFolder.value.service)
|
||||
const collection = String(selectedFolder.value.identifier)
|
||||
|
||||
const messages = entitiesStore.messages[provider]?.[service]?.[collection]
|
||||
return messages ? Object.values(messages) : []
|
||||
return entitiesStore.entitiesForCollection(
|
||||
selectedFolder.value.provider,
|
||||
selectedFolder.value.service,
|
||||
selectedFolder.value.identifier
|
||||
)
|
||||
})
|
||||
</script>
|
||||
|
||||
@@ -230,7 +229,7 @@ const currentMessages = computed(() => {
|
||||
<v-btn
|
||||
icon="mdi-refresh"
|
||||
@click="mailSync.sync()"
|
||||
:loading="mailSync.isRunning.value && entitiesStore.loading"
|
||||
:loading="mailSync.isRunning.value && entitiesStore.transceiving"
|
||||
variant="text"
|
||||
>
|
||||
<v-icon>mdi-refresh</v-icon>
|
||||
|
||||
Reference in New Issue
Block a user