diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationsActivity.java b/src/main/java/eu/siacs/conversations/ui/ConversationsActivity.java index bdfb4adfd8da123ee9b31e31ee592591b35f52ec..fe893ec81141ecc6f080261f2301929398a22f78 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationsActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationsActivity.java @@ -57,8 +57,11 @@ import androidx.annotation.IdRes; import androidx.annotation.NonNull; import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.AlertDialog; +import androidx.core.content.ContextCompat; import androidx.databinding.DataBindingUtil; +import com.cheogram.android.DownloadDefaultStickers; + import org.openintents.openpgp.util.OpenPgpApi; import java.util.Arrays; @@ -118,6 +121,7 @@ public class ConversationsActivity extends XmppActivity implements OnConversatio public static final int REQUEST_PLAY_PAUSE = 0x5432; public static final int REQUEST_MICROPHONE = 0x5432f; public static final int DIALLER_INTEGRATION = 0x5432ff; + public static final int REQUEST_DOWNLOAD_STICKERS = 0xbf8702; //secondary fragment (when holding the conversation, must be initialized before refreshing the overview fragment @@ -217,12 +221,10 @@ public class ConversationsActivity extends XmppActivity implements OnConversatio } final Fragment fragment = getFragmentManager().findFragmentById(R.id.main_fragment); if (fragment instanceof ConversationsOverviewFragment) { - if (ExceptionHelper.checkForCrash(this)) { - return; - } - if (!offerToSetupDiallerIntegration()) { - openBatteryOptimizationDialogIfNeeded(); - } + if (ExceptionHelper.checkForCrash(this)) return; + if (offerToSetupDiallerIntegration()) return; + if (offerToDownloadStickers()) return; + openBatteryOptimizationDialogIfNeeded(); } } @@ -259,6 +261,26 @@ public class ConversationsActivity extends XmppActivity implements OnConversatio } } + private boolean offerToDownloadStickers() { + int offered = getPreferences().getInt("default_stickers_offered", 0); + if (offered > 0) return false; + getPreferences().edit().putInt("default_stickers_offered", 1).apply(); + + AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setTitle("Download Stickers?"); + builder.setMessage("Would you like to download some default sticker packs?"); + builder.setPositiveButton(R.string.yes, (dialog, which) -> { + if (hasStoragePermission(REQUEST_DOWNLOAD_STICKERS)) { + downloadStickers(); + } + }); + builder.setNegativeButton(R.string.no, (dialog, which) -> { }); + final AlertDialog dialog = builder.create(); + dialog.setCanceledOnTouchOutside(false); + dialog.show(); + return true; + } + private boolean offerToSetupDiallerIntegration() { if (mRequestCode == DIALLER_INTEGRATION) { mRequestCode = -1; @@ -353,11 +375,21 @@ public class ConversationsActivity extends XmppActivity implements OnConversatio "com.android.server.telecom.settings.EnableAccountPreferenceActivity")); startActivityForResult(intent, DIALLER_INTEGRATION); break; + case REQUEST_DOWNLOAD_STICKERS: + downloadStickers(); + break; } } } } + private void downloadStickers() { + Intent intent = new Intent(this, DownloadDefaultStickers.class); + ContextCompat.startForegroundService(this, intent); + displayToast("Sticker download started"); + showDialogsIfMainIsOverview(); + } + @Override public void onActivityResult(int requestCode, int resultCode, final Intent data) { super.onActivityResult(requestCode, resultCode, data);