Add function to remove quotes
authorCyperghost <olaf_schmitz_1@t-online.de>
Thu, 19 Dec 2024 12:11:05 +0000 (13:11 +0100)
committerAlexander Ebert <ebert@woltlab.com>
Wed, 8 Jan 2025 16:25:19 +0000 (17:25 +0100)
ts/WoltLabSuite/Core/Component/Quote/Storage.ts
wcfsetup/install/files/js/WoltLabSuite/Core/Component/Quote/Storage.js

index 8c75371ddb8a1a9ae775428e0ae35ddb81f0b0b9..a4bdfbb545d4f54990b4c539a6820dfb0eb4aa20 100644 (file)
@@ -64,6 +64,36 @@ export async function saveFullQuote(objectType: string, objectClassName: string,
   );
 }
 
+export function getQuotes(): Map<string, Set<string>> {
+  return getStorage().quotes;
+}
+
+export function getMessage(objectType: string, objectId?: number): Message | undefined {
+  const key = objectId ? getKey(objectType, objectId) : objectType;
+
+  return getStorage().messages.get(key);
+}
+
+export function removeQuote(objectType: string, objectId: number, quote: string): void {
+  const storage = getStorage();
+
+  const key = getKey(objectType, objectId);
+  if (!storage.quotes.has(key)) {
+    return;
+  }
+
+  storage.quotes.get(key)!.delete(quote);
+
+  if (storage.quotes.get(key)!.size === 0) {
+    storage.quotes.delete(key);
+    storage.messages.delete(key);
+  }
+
+  saveStorage(storage);
+
+  refreshQuoteLists();
+}
+
 function storeQuote(objectType: string, message: Message, quote: string): void {
   const storage = getStorage();
 
@@ -79,16 +109,6 @@ function storeQuote(objectType: string, message: Message, quote: string): void {
   saveStorage(storage);
 }
 
-export function getQuotes(): Map<string, Set<string>> {
-  return getStorage().quotes;
-}
-
-export function getMessage(objectType: string, objectId?: number): Message | undefined {
-  const key = objectId ? getKey(objectType, objectId) : objectType;
-
-  return getStorage().messages.get(key);
-}
-
 function getStorage(): StorageData {
   const data = window.localStorage.getItem(STORAGE_KEY);
   if (data === null) {
index 4de88f61778bfdf7b4b72a5bdc53131f7957ce94..fd6e14848dc2b3c7211b9e98191de034556a052c 100644 (file)
@@ -14,6 +14,7 @@ define(["require", "exports", "tslib", "WoltLabSuite/Core/Core", "WoltLabSuite/C
     exports.saveFullQuote = saveFullQuote;
     exports.getQuotes = getQuotes;
     exports.getMessage = getMessage;
+    exports.removeQuote = removeQuote;
     Core = tslib_1.__importStar(Core);
     const STORAGE_KEY = Core.getStoragePrefix() + "quotes";
     async function saveQuote(objectType, objectId, objectClassName, message) {
@@ -41,6 +42,27 @@ define(["require", "exports", "tslib", "WoltLabSuite/Core/Core", "WoltLabSuite/C
             avatar: result.value.avatar,
         }, result.value.message);
     }
+    function getQuotes() {
+        return getStorage().quotes;
+    }
+    function getMessage(objectType, objectId) {
+        const key = objectId ? getKey(objectType, objectId) : objectType;
+        return getStorage().messages.get(key);
+    }
+    function removeQuote(objectType, objectId, quote) {
+        const storage = getStorage();
+        const key = getKey(objectType, objectId);
+        if (!storage.quotes.has(key)) {
+            return;
+        }
+        storage.quotes.get(key).delete(quote);
+        if (storage.quotes.get(key).size === 0) {
+            storage.quotes.delete(key);
+            storage.messages.delete(key);
+        }
+        saveStorage(storage);
+        (0, List_1.refreshQuoteLists)();
+    }
     function storeQuote(objectType, message, quote) {
         const storage = getStorage();
         const key = getKey(objectType, message.objectID);
@@ -51,13 +73,6 @@ define(["require", "exports", "tslib", "WoltLabSuite/Core/Core", "WoltLabSuite/C
         storage.quotes.get(key).add(quote);
         saveStorage(storage);
     }
-    function getQuotes() {
-        return getStorage().quotes;
-    }
-    function getMessage(objectType, objectId) {
-        const key = objectId ? getKey(objectType, objectId) : objectType;
-        return getStorage().messages.get(key);
-    }
     function getStorage() {
         const data = window.localStorage.getItem(STORAGE_KEY);
         if (data === null) {