mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2026-09-01 20:08:57 +00:00
add folder clear
This commit is contained in:
+13
-7
@@ -1040,7 +1040,7 @@ processChatCommand' vr = \case
|
||||
withStore' $ \db -> deleteNoteFolder db user nf
|
||||
pure $ CRNoteFolderDeleted user nf
|
||||
CTContactRequest -> pure $ chatCmdError (Just user) "not supported"
|
||||
APIClearChat (ChatRef cType chatId) -> withUser $ \user -> case cType of
|
||||
APIClearChat (ChatRef cType chatId) -> withUser $ \user@User {userId} -> case cType of
|
||||
CTDirect -> do
|
||||
ct <- withStore $ \db -> getContact db user chatId
|
||||
filesInfo <- withStore' $ \db -> getContactFileInfo db user ct
|
||||
@@ -1055,7 +1055,14 @@ processChatCommand' vr = \case
|
||||
membersToDelete <- withStore' $ \db -> getGroupMembersForExpiration db user gInfo
|
||||
forM_ membersToDelete $ \m -> withStore' $ \db -> deleteGroupMember db user m
|
||||
pure $ CRChatCleared user (AChatInfo SCTGroup $ GroupChat gInfo)
|
||||
CTLocal -> error "TODO: APIClearChat.CTLocal"
|
||||
CTLocal -> do
|
||||
nf <- withStore $ \db -> getNoteFolder db user chatId
|
||||
filesInfo <- withStore' $ \db -> getNoteFolderFileInfo db user nf
|
||||
withChatLock "clearChat local" . procCmd $ do
|
||||
mapM_ (deleteFile user) filesInfo
|
||||
withStore' $ \db -> deleteNoteFolderFiles db userId nf
|
||||
withStore' $ \db -> deleteNoteFolderCIs db user nf
|
||||
pure $ CRChatCleared user (AChatInfo SCTLocal $ LocalChat nf)
|
||||
CTContactConnection -> pure $ chatCmdError (Just user) "not supported"
|
||||
CTContactRequest -> pure $ chatCmdError (Just user) "not supported"
|
||||
APIAcceptContact incognito connReqId -> withUser $ \_ -> withChatLock "acceptContact" $ do
|
||||
@@ -1836,13 +1843,12 @@ processChatCommand' vr = \case
|
||||
quotedItemId <- withStore $ \db -> getGroupChatItemIdByText db user groupId cName quotedMsg
|
||||
let mc = MCText msg
|
||||
processChatCommand . APISendMessage (ChatRef CTGroup groupId) False Nothing $ ComposedMessage Nothing (Just quotedItemId) mc
|
||||
-- APINewLocalChat userId localChatProfile -> withUserId userId $ \user -> do
|
||||
-- checkValidName displayName
|
||||
-- CRLocalChatCreated user <$> createLocalChat userId localChatProfile
|
||||
NewNoteFolder displayName -> withUser $ \user@User {userId} -> do
|
||||
-- processChatCommand $ APINewLocalChat userId localChatProfile
|
||||
checkValidName displayName
|
||||
withStore $ \db -> CRNoteFolderCreated user <$> createNewNoteFolder db userId displayName
|
||||
ClearNoteFolder displayName -> withUser $ \user -> do
|
||||
folderId <- withStore $ \db -> getNoteFolderIdByName db user displayName
|
||||
processChatCommand $ APIClearChat (ChatRef CTLocal folderId)
|
||||
DeleteNoteFolder displayName -> withUser $ \user -> do
|
||||
folderId <- withStore $ \db -> getNoteFolderIdByName db user displayName
|
||||
processChatCommand $ APIDeleteChat (ChatRef CTLocal folderId) True
|
||||
@@ -6367,7 +6373,7 @@ chatCommandP =
|
||||
("/delete #" <|> "/d #") *> (DeleteGroup <$> displayName),
|
||||
("/delete $" <|> "/d $") *> (DeleteNoteFolder <$> displayName),
|
||||
("/delete " <|> "/d ") *> char_ '@' *> (DeleteContact <$> displayName),
|
||||
-- TODO: "/clear $" *> (ClearNoteFolder <$> displayName),
|
||||
"/clear $" *> (ClearNoteFolder <$> displayName),
|
||||
"/clear #" *> (ClearGroup <$> displayName),
|
||||
"/clear " *> char_ '@' *> (ClearContact <$> displayName),
|
||||
("/members " <|> "/ms ") *> char_ '#' *> (ListMembers <$> displayName),
|
||||
|
||||
@@ -408,8 +408,8 @@ data ChatCommand
|
||||
| DeleteGroupLink GroupName
|
||||
| ShowGroupLink GroupName
|
||||
| SendGroupMessageQuote {groupName :: GroupName, contactName_ :: Maybe ContactName, quotedMsg :: Text, message :: Text}
|
||||
-- | APINewLocalChat UserId LocalChatProfile
|
||||
| NewNoteFolder NoteFolderName
|
||||
| ClearNoteFolder NoteFolderName
|
||||
| DeleteNoteFolder NoteFolderName
|
||||
| LastChats (Maybe Int) -- UserId (not used in UI)
|
||||
| LastMessages (Maybe ChatName) Int (Maybe String) -- UserId (not used in UI)
|
||||
|
||||
@@ -79,7 +79,12 @@ deleteNoteFolderFiles db userId NoteFolder {noteFolderId} = do
|
||||
AND chat_item_id IN (
|
||||
SELECT chat_item_id FROM chat_items WHERE user_id = ? AND note_folder_id = ?
|
||||
)
|
||||
|] (userId, userId, noteFolderId)
|
||||
|]
|
||||
(userId, userId, noteFolderId)
|
||||
|
||||
deleteNoteFolderCIs :: DB.Connection -> User -> NoteFolder -> IO ()
|
||||
deleteNoteFolderCIs db User {userId} NoteFolder {noteFolderId} =
|
||||
DB.execute db [sql| DELETE FROM chat_items WHERE user_id = ? AND note_folder_id = ? |] (userId, noteFolderId)
|
||||
|
||||
deleteNoteFolder :: DB.Connection -> User -> NoteFolder -> IO ()
|
||||
deleteNoteFolder db User {userId} NoteFolder {noteFolderId} =
|
||||
|
||||
@@ -70,6 +70,10 @@ testFiles tmp = withNewTestChat tmp "alice" aliceProfile $ \alice -> do
|
||||
alice ##> "/fs 1"
|
||||
alice <## "local file 1 (test.jpg)"
|
||||
|
||||
alice ##> "/clear $self"
|
||||
alice ##> "/fs 1"
|
||||
alice <## "chat db error: SEChatItemNotFoundByFileId {fileId = 1}"
|
||||
|
||||
createFolder :: TestCC -> String -> IO ()
|
||||
createFolder cc label = do
|
||||
cc ##> ("/note folder " <> label)
|
||||
|
||||
Reference in New Issue
Block a user