diff --git a/app/src/main/java/org/thunderdog/challegram/navigation/DrawerController.java b/app/src/main/java/org/thunderdog/challegram/navigation/DrawerController.java index 0e8f662570..4e551ac864 100644 --- a/app/src/main/java/org/thunderdog/challegram/navigation/DrawerController.java +++ b/app/src/main/java/org/thunderdog/challegram/navigation/DrawerController.java @@ -818,6 +818,9 @@ public boolean onLongClick (View v) { context.currentTdlib().ui().addAccount(context, true, true); } }); + } else if (itemId == R.id.btn_calls) { + context.currentTdlib().ui().showClearCallHistoryOptions(this); + return true; } return false; } diff --git a/app/src/main/java/org/thunderdog/challegram/telegram/Tdlib.java b/app/src/main/java/org/thunderdog/challegram/telegram/Tdlib.java index 65f434313f..abb3fd304e 100644 --- a/app/src/main/java/org/thunderdog/challegram/telegram/Tdlib.java +++ b/app/src/main/java/org/thunderdog/challegram/telegram/Tdlib.java @@ -11110,6 +11110,10 @@ public boolean canEditSlowMode (long chatId) { return false; } + public void clearCallsHistory (boolean revoke, @Nullable Runnable after) { + send(new TdApi.DeleteAllCallMessages(revoke), okHandler(after)); + } + public boolean isBroadcastGroup (long chatId) { TdApi.Supergroup supergroup = chatToSupergroup(chatId); return supergroup != null && supergroup.isBroadcastGroup; diff --git a/app/src/main/java/org/thunderdog/challegram/telegram/TdlibUi.java b/app/src/main/java/org/thunderdog/challegram/telegram/TdlibUi.java index aff8ba500d..9ed61a32bc 100644 --- a/app/src/main/java/org/thunderdog/challegram/telegram/TdlibUi.java +++ b/app/src/main/java/org/thunderdog/challegram/telegram/TdlibUi.java @@ -595,6 +595,31 @@ public void showDeleteOptions (ViewController context, MessageWithProperties showDeleteOptions(context, new MessageWithProperties[] {message}, null); } + public void showClearCallHistoryOptions (ViewController context) { + tdlib.send(new TdApi.SearchCallMessages("", 1, false), (result, error) -> { + if (error != null || result.messages.length == 0) { + return; + } + context.runOnUiThreadOptional(() -> + context.showSettings(new SettingsWrapBuilder(R.id.btn_delete) + .addHeaderItem(Lang.getString(R.string.AreYouSureClearCalls)) + .setRawItems(new ListItem[] { + new ListItem(ListItem.TYPE_CHECKBOX_OPTION, R.id.btn_deleteAll, 0, R.string.DeleteCallsForEveryone, false) + }) + .setIntDelegate((id, result2) -> { + if (id == R.id.btn_delete) { + boolean revoke = result2.get(R.id.btn_deleteAll) != 0; + tdlib.clearCallsHistory(revoke, () -> + UI.showToast(R.string.Done, Toast.LENGTH_SHORT) + ); + } + }) + .setSaveStr(R.string.Delete) + .setSaveColorId(ColorId.textNegative)) + ); + }); + } + public void showDeleteOptions (final ViewController context, final MessageWithProperties[] messages, final @Nullable Runnable after) { if (context != null && messages != null && messages.length > 0) { if (deleteSuperGroupMessages(context, messages, after)) { diff --git a/app/src/main/java/org/thunderdog/challegram/ui/CallListController.java b/app/src/main/java/org/thunderdog/challegram/ui/CallListController.java index 1d13e373f9..da79db929f 100644 --- a/app/src/main/java/org/thunderdog/challegram/ui/CallListController.java +++ b/app/src/main/java/org/thunderdog/challegram/ui/CallListController.java @@ -16,6 +16,7 @@ import android.content.Context; import android.view.View; +import android.widget.LinearLayout; import android.widget.TextView; import androidx.annotation.NonNull; @@ -33,6 +34,8 @@ import org.thunderdog.challegram.data.CallItem; import org.thunderdog.challegram.data.CallSection; import org.thunderdog.challegram.data.TGFoundChat; +import org.thunderdog.challegram.navigation.HeaderView; +import org.thunderdog.challegram.navigation.MoreDelegate; import org.thunderdog.challegram.navigation.SettingsWrapBuilder; import org.thunderdog.challegram.navigation.ViewController; import org.thunderdog.challegram.telegram.DateChangeListener; @@ -66,6 +69,7 @@ public class CallListController extends RecyclerViewController implements View.OnClickListener, Client.ResultHandler, MessageListener, + MoreDelegate, DateChangeListener, View.OnLongClickListener, BaseView.ActionListProvider, TdlibOptionListener { @@ -83,6 +87,36 @@ public CharSequence getName () { return Lang.getString(R.string.Calls); } + @Override + protected int getMenuId () { + return messages != null && !messages.isEmpty() ? R.id.menu_btn_more : 0; + } + + @Override + public void fillMenuItems (int id, HeaderView header, LinearLayout menu) { + if (id == R.id.menu_btn_more) { + header.addMoreButton(menu, this); + } + } + + @Override + public void onMenuItemPressed (int id, View view) { + if (id == R.id.menu_btn_more) { + showMore(new int[] {R.id.btn_clear_recent_calls}, new String[] {Lang.getString(R.string.ClearRecentCalls)}); + } + } + + @Override + public void onMoreItemPressed (int id) { + if (id == R.id.btn_clear_recent_calls) { + tdlib.ui().showClearCallHistoryOptions(this); + } + } + + public boolean hasRecentCalls () { + return messages != null && !messages.isEmpty(); + } + private SettingsAdapter adapter; @Override diff --git a/app/src/main/java/org/thunderdog/challegram/ui/MainController.java b/app/src/main/java/org/thunderdog/challegram/ui/MainController.java index 22c9b1ea96..a08b6c602c 100644 --- a/app/src/main/java/org/thunderdog/challegram/ui/MainController.java +++ b/app/src/main/java/org/thunderdog/challegram/ui/MainController.java @@ -1482,6 +1482,12 @@ public boolean onPagerItemLongClick (int index) { TdApi.ChatList chatList = pagerChatLists.get(index); showChatListOptions(chatList); return true; + } else if (index == POSITION_CALLS) { + ViewController controller = getCachedControllerForPosition(index); + if (controller instanceof CallListController && ((CallListController) controller).hasRecentCalls()) { + tdlib.ui().showClearCallHistoryOptions(this); + return true; + } } return false; } diff --git a/app/src/main/res/values/ids.xml b/app/src/main/res/values/ids.xml index 2b09bccf8a..65a5d5586c 100644 --- a/app/src/main/res/values/ids.xml +++ b/app/src/main/res/values/ids.xml @@ -1428,4 +1428,7 @@ - \ No newline at end of file + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ddc0cf7324..a203a5956d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -5722,6 +5722,9 @@ %1$s monthly user %1$s monthly users + Do you want to delete all recent calls? + Clear recent calls + Delete for everyone Restricted Content Sensitive Content