forked from cybrespace/pinafore
		
	
		
			
	
	
		
			85 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			85 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								import { dbPromise, getDatabase } from '../databaseLifecycle'
							 | 
						||
| 
								 | 
							
								import {
							 | 
						||
| 
								 | 
							
								  deleteFromCache, notificationsCache,
							 | 
						||
| 
								 | 
							
								  statusesCache
							 | 
						||
| 
								 | 
							
								} from '../cache'
							 | 
						||
| 
								 | 
							
								import {
							 | 
						||
| 
								 | 
							
								  NOTIFICATION_TIMELINES_STORE,
							 | 
						||
| 
								 | 
							
								  NOTIFICATIONS_STORE, PINNED_STATUSES_STORE,
							 | 
						||
| 
								 | 
							
								  STATUS_TIMELINES_STORE,
							 | 
						||
| 
								 | 
							
								  STATUSES_STORE,
							 | 
						||
| 
								 | 
							
								  THREADS_STORE
							 | 
						||
| 
								 | 
							
								} from '../constants'
							 | 
						||
| 
								 | 
							
								import {
							 | 
						||
| 
								 | 
							
								  createThreadKeyRange
							 | 
						||
| 
								 | 
							
								} from '../keys'
							 | 
						||
| 
								 | 
							
								import { deleteAll } from '../utils'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export async function deleteStatusesAndNotifications (instanceName, statusIds, notificationIds) {
							 | 
						||
| 
								 | 
							
								  for (let statusId of statusIds) {
							 | 
						||
| 
								 | 
							
								    deleteFromCache(statusesCache, instanceName, statusId)
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  for (let notificationId of notificationIds) {
							 | 
						||
| 
								 | 
							
								    deleteFromCache(notificationsCache, instanceName, notificationId)
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  const db = await getDatabase(instanceName)
							 | 
						||
| 
								 | 
							
								  let storeNames = [
							 | 
						||
| 
								 | 
							
								    STATUSES_STORE,
							 | 
						||
| 
								 | 
							
								    STATUS_TIMELINES_STORE,
							 | 
						||
| 
								 | 
							
								    NOTIFICATIONS_STORE,
							 | 
						||
| 
								 | 
							
								    NOTIFICATION_TIMELINES_STORE,
							 | 
						||
| 
								 | 
							
								    PINNED_STATUSES_STORE,
							 | 
						||
| 
								 | 
							
								    THREADS_STORE
							 | 
						||
| 
								 | 
							
								  ]
							 | 
						||
| 
								 | 
							
								  await dbPromise(db, storeNames, 'readwrite', (stores) => {
							 | 
						||
| 
								 | 
							
								    let [
							 | 
						||
| 
								 | 
							
								      statusesStore,
							 | 
						||
| 
								 | 
							
								      statusTimelinesStore,
							 | 
						||
| 
								 | 
							
								      notificationsStore,
							 | 
						||
| 
								 | 
							
								      notificationTimelinesStore,
							 | 
						||
| 
								 | 
							
								      pinnedStatusesStore,
							 | 
						||
| 
								 | 
							
								      threadsStore
							 | 
						||
| 
								 | 
							
								    ] = stores
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function deleteStatus (statusId) {
							 | 
						||
| 
								 | 
							
								      statusesStore.delete(statusId)
							 | 
						||
| 
								 | 
							
								      deleteAll(
							 | 
						||
| 
								 | 
							
								        pinnedStatusesStore,
							 | 
						||
| 
								 | 
							
								        pinnedStatusesStore.index('statusId'),
							 | 
						||
| 
								 | 
							
								        IDBKeyRange.only(statusId)
							 | 
						||
| 
								 | 
							
								      )
							 | 
						||
| 
								 | 
							
								      deleteAll(
							 | 
						||
| 
								 | 
							
								        statusTimelinesStore,
							 | 
						||
| 
								 | 
							
								        statusTimelinesStore.index('statusId'),
							 | 
						||
| 
								 | 
							
								        IDBKeyRange.only(statusId)
							 | 
						||
| 
								 | 
							
								      )
							 | 
						||
| 
								 | 
							
								      deleteAll(
							 | 
						||
| 
								 | 
							
								        threadsStore,
							 | 
						||
| 
								 | 
							
								        threadsStore.index('statusId'),
							 | 
						||
| 
								 | 
							
								        IDBKeyRange.only(statusId)
							 | 
						||
| 
								 | 
							
								      )
							 | 
						||
| 
								 | 
							
								      deleteAll(
							 | 
						||
| 
								 | 
							
								        threadsStore,
							 | 
						||
| 
								 | 
							
								        threadsStore,
							 | 
						||
| 
								 | 
							
								        createThreadKeyRange(statusId)
							 | 
						||
| 
								 | 
							
								      )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function deleteNotification (notificationId) {
							 | 
						||
| 
								 | 
							
								      notificationsStore.delete(notificationId)
							 | 
						||
| 
								 | 
							
								      deleteAll(
							 | 
						||
| 
								 | 
							
								        notificationTimelinesStore,
							 | 
						||
| 
								 | 
							
								        notificationTimelinesStore.index('notificationId'),
							 | 
						||
| 
								 | 
							
								        IDBKeyRange.only(notificationId)
							 | 
						||
| 
								 | 
							
								      )
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    for (let statusId of statusIds) {
							 | 
						||
| 
								 | 
							
								      deleteStatus(statusId)
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    for (let notificationId of notificationIds) {
							 | 
						||
| 
								 | 
							
								      deleteNotification(notificationId)
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								}
							 |