feat(disabled): remove message requests from community when leaving this community

pull/731/head
ryanzhao 8 months ago
parent 5e0a29f5af
commit 2d6db6a768

@ -462,6 +462,34 @@ public extension SessionThread {
)
}
func isMessageRequestFromCommunity(_ db: Database, openGroupId: String) -> Bool {
var isMessageRequestFromCommunity: Bool = false
if let currentUserBlinded15PublicKey: String = Self.getUserHexEncodedBlindedKey(
db,
threadId: openGroupId,
threadVariant: .community,
blindingPrefix: .blinded15
) {
isMessageRequestFromCommunity = isMessageRequestFromCommunity || ((try? Interaction
.filter(Interaction.Columns.threadId == self.id)
.filter(Interaction.Columns.openGroupWhisperTo == currentUserBlinded15PublicKey)
.isNotEmpty(db)) ?? false)
}
if let currentUserBlinded25PublicKey: String = Self.getUserHexEncodedBlindedKey(
db,
threadId: openGroupId,
threadVariant: .community,
blindingPrefix: .blinded25
) {
isMessageRequestFromCommunity = isMessageRequestFromCommunity || ((try? Interaction
.filter(Interaction.Columns.threadId == self.id)
.filter(Interaction.Columns.openGroupWhisperTo == currentUserBlinded25PublicKey)
.isNotEmpty(db)) ?? false)
}
return isMessageRequestFromCommunity
}
func isNoteToSelf(_ db: Database? = nil) -> Bool {
return (
variant == .contact &&

@ -365,9 +365,26 @@ public final class OpenGroupManager {
.updateAllAndConfig(db, OpenGroup.Columns.isActive.set(to: false))
}
//TODO: Remove message requests from this open group
if !calledFromConfigHandling, let server: String = server, let roomToken: String = roomToken {
try? SessionUtil.remove(db, server: server, roomToken: roomToken)
}
}
private func cleanMessageRequests(
_ db: Database,
openGroupId: String,
openGroupServer: String?,
calledFromConfigHandling: Bool,
using dependencies: Dependencies = Dependencies()
) {
// Remove threads with only message requests from open group
_ = try? SessionThread
.filter(SessionThread.isMessageRequest(userPublicKey: getUserHexEncodedPublicKey(db, using: dependencies)))
.fetchAll(db)
.filter { $0.isMessageRequestFromCommunity(db, openGroupId: openGroupId)}
.map { try $0.delete(db)}
if !calledFromConfigHandling, let server: String = server {
if !calledFromConfigHandling, let server: String = openGroupServer {
//Remove inbox messages
if let data = try? OpenGroupAPI.preparedClearInbox(db, on: server) {
OpenGroupAPI
@ -375,10 +392,6 @@ public final class OpenGroupManager {
.map { _ in [server: true] }
.sinkUntilComplete()
}
if let roomToken: String = roomToken {
try? SessionUtil.remove(db, server: server, roomToken: roomToken)
}
}
}

Loading…
Cancel
Save