Skip to content

Commit 628f913

Browse files
florianhaarBoehrsi
authored andcommitted
Delete messages chatmail#135 (chatmail#37)
1 parent a6989bb commit 628f913

File tree

2 files changed

+31
-3
lines changed

2 files changed

+31
-3
lines changed

android/src/main/java/com/openxchange/deltachatcore/handlers/ContextCallHandler.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ public class ContextCallHandler extends AbstractCallHandler {
9696
private static final String METHOD_JOIN_SECUREJOIN = "context_joinSecurejoin";
9797
private static final String METHOD_CHECK_QR = "context_checkQr";
9898
private static final String METHOD_STOP_ONGOING_PROCESS = "context_stopOngoingProcess";
99+
private static final String METHOD_DELETE_MESSAGES = "context_deleteMessages";
99100

100101
private static final String TYPE_INT = "int";
101102
private static final String TYPE_STRING = "String";
@@ -227,6 +228,9 @@ public void handleCall(MethodCall methodCall, MethodChannel.Result result) {
227228
case METHOD_STOP_ONGOING_PROCESS:
228229
stopOngoingProcess(result);
229230
break;
231+
case METHOD_DELETE_MESSAGES:
232+
deleteMessages(methodCall, result);
233+
break;
230234
default:
231235
result.notImplemented();
232236
}
@@ -810,6 +814,24 @@ private void checkQr(MethodCall methodCall, MethodChannel.Result result) {
810814
result.success(summaryResult);
811815
}
812816

817+
private void deleteMessages(MethodCall methodCall, MethodChannel.Result result) {
818+
if (!hasArgumentKeys(methodCall, ARGUMENT_MESSAGE_IDS)) {
819+
resultErrorArgumentMissing(result);
820+
return;
821+
}
822+
ArrayList<Integer> msgIdArray = methodCall.argument(ARGUMENT_MESSAGE_IDS);
823+
if(msgIdArray == null){
824+
resultErrorArgumentMissingValue(result);
825+
return;
826+
}
827+
int[] msgIds = new int[msgIdArray.size()];
828+
for (int i = 0; i < msgIds.length; i++) {
829+
msgIds[i] = msgIdArray.get(i);
830+
}
831+
832+
dcContext.deleteMsgs(msgIds);
833+
}
834+
813835
private void stopOngoingProcess(MethodChannel.Result result) {
814836
dcContext.stopOngoingProcess();
815837
result.success(null);

lib/src/context.dart

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,8 @@ class Context {
8585
static const String methodJoinSecurejoinQr = "context_joinSecurejoin";
8686
static const String methodCheckQr = "context_checkQr";
8787
static const String methodStopOngoingProcess = "context_stopOngoingProcess";
88+
static const String methodDeleteMessages = "context_deleteMessages";
89+
8890
static const String configAddress = "addr";
8991
static const String configMailServer = "mail_server";
9092
static const String configMailUser = "mail_user";
@@ -264,7 +266,7 @@ class Context {
264266
}
265267

266268
Future<void> markSeenMessages(List<int> msgIds) async {
267-
return await core.invokeMethod(methodMarkSeenMessages, getMarkSeenMessagesArguments(msgIds));
269+
return await core.invokeMethod(methodMarkSeenMessages, getMessageIdsArguments(msgIds));
268270
}
269271

270272
Future<String> getSecureJoinQr(int chatId) async {
@@ -283,6 +285,10 @@ class Context {
283285
return await core.invokeMethod(methodStopOngoingProcess);
284286
}
285287

288+
Future<void> deleteMessages(List<int> msgIds) async {
289+
return await core.invokeMethod(methodDeleteMessages, getMessageIdsArguments(msgIds));
290+
}
291+
286292
Map<String, dynamic> getKeyArguments(String key) => <String, dynamic>{Base.argumentKey: key};
287293

288294
Map<String, dynamic> getConfigArguments(String type, String key, value) =>
@@ -295,6 +301,8 @@ class Context {
295301

296302
Map<String, dynamic> getIdArguments(int id) => <String, dynamic>{Base.argumentId: id};
297303

304+
Map<String, dynamic> getMessageIdsArguments(List<int> msgIds) => <String, dynamic>{Base.argumentMessageIds: msgIds};
305+
298306
Map<String, dynamic> getCreateGroupArguments(bool verified, String name) =>
299307
<String, dynamic>{Base.argumentVerified: verified, Base.argumentName: name};
300308

@@ -325,8 +333,6 @@ class Context {
325333
Map<String, dynamic> getForwardMessageArguments(int chatId, List<int> msgIds) =>
326334
<String, dynamic>{Base.argumentChatId: chatId, Base.argumentMessageIds: msgIds};
327335

328-
Map<String, dynamic> getMarkSeenMessagesArguments(List<int> msgIds) => <String, dynamic>{Base.argumentMessageIds: msgIds};
329-
330336
Map<String, dynamic> getSecureJoinQrArguments(int chatId) => <String, dynamic>{Base.argumentChatId: chatId};
331337

332338
Map<String, dynamic> getQrTextArguments(String qrText) => <String, dynamic>{Base.argumentQrText: qrText};

0 commit comments

Comments
 (0)