diff --git a/app/src/main/java/com/astralquarks/notes/repository/NoteRepository.kt b/app/src/main/java/com/astralquarks/notes/repository/NoteRepository.kt index bd303c0..4f4812d 100644 --- a/app/src/main/java/com/astralquarks/notes/repository/NoteRepository.kt +++ b/app/src/main/java/com/astralquarks/notes/repository/NoteRepository.kt @@ -2,6 +2,7 @@ package com.astralquarks.notes.repository import com.astralquarks.notes.auth.AuthManager import com.astralquarks.notes.db.NoteDao +import com.astralquarks.notes.util.WebShareManager import com.astralquarks.notes.model.Note import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers @@ -83,6 +84,7 @@ class NoteRepository( if (authManager.isSignedIn) { repositoryScope.launch { authManager.deleteNoteFromFirestore(noteId) + WebShareManager.revokeSharesForNote(noteId) } } } @@ -94,6 +96,7 @@ class NoteRepository( repositoryScope.launch { trashNotes.forEach { note -> authManager.deleteNoteFromFirestore(note.id) + WebShareManager.revokeSharesForNote(note.id) } } } diff --git a/app/src/main/java/com/astralquarks/notes/util/WebShareManager.kt b/app/src/main/java/com/astralquarks/notes/util/WebShareManager.kt index aa8849b..4a09850 100644 --- a/app/src/main/java/com/astralquarks/notes/util/WebShareManager.kt +++ b/app/src/main/java/com/astralquarks/notes/util/WebShareManager.kt @@ -143,4 +143,24 @@ object WebShareManager { false } } + + suspend fun revokeSharesForNote(noteId: String) = withContext(Dispatchers.IO) { + val auth = FirebaseAuth.getInstance() + val uid = auth.currentUser?.uid ?: return@withContext + + try { + val firestore = FirebaseFirestore.getInstance() + val snapshot = firestore.collection("shares") + .whereEqualTo("ownerUid", uid) + .whereEqualTo("noteId", noteId) + .get() + .await() + + for (doc in snapshot.documents) { + doc.reference.delete().await() + } + } catch (e: Exception) { + // Ignore failure + } + } }