mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-02-14 23:18:43 +00:00
Clean up system for blessed sticker packs.
This commit is contained in:
@@ -41,11 +41,7 @@ public final class AppInitialization {
|
||||
TextSecurePreferences.setTypingIndicatorsEnabled(context, true);
|
||||
AppDependencies.getMegaphoneRepository().onFirstEverAppLaunch();
|
||||
SignalStore.onFirstEverAppLaunch();
|
||||
AppDependencies.getJobManager().add(StickerPackDownloadJob.forInstall(BlessedPacks.ZOZO.getPackId(), BlessedPacks.ZOZO.getPackKey(), false));
|
||||
AppDependencies.getJobManager().add(StickerPackDownloadJob.forInstall(BlessedPacks.BANDIT.getPackId(), BlessedPacks.BANDIT.getPackKey(), false));
|
||||
AppDependencies.getJobManager().add(StickerPackDownloadJob.forInstall(BlessedPacks.DAY_BY_DAY.getPackId(), BlessedPacks.DAY_BY_DAY.getPackKey(), false));
|
||||
AppDependencies.getJobManager().add(StickerPackDownloadJob.forReference(BlessedPacks.SWOON_HANDS.getPackId(), BlessedPacks.SWOON_HANDS.getPackKey()));
|
||||
AppDependencies.getJobManager().add(StickerPackDownloadJob.forReference(BlessedPacks.SWOON_FACES.getPackId(), BlessedPacks.SWOON_FACES.getPackKey()));
|
||||
AppDependencies.getJobManager().addAll(BlessedPacks.getFirstInstallJobs());
|
||||
}
|
||||
|
||||
public static void onPostBackupRestore(@NonNull Context context) {
|
||||
@@ -59,11 +55,7 @@ public final class AppInitialization {
|
||||
SignalStore.notificationProfile().setHasSeenTooltip(true);
|
||||
TextSecurePreferences.onPostBackupRestore(context);
|
||||
SignalStore.settings().setPassphraseDisabled(true);
|
||||
AppDependencies.getJobManager().add(StickerPackDownloadJob.forInstall(BlessedPacks.ZOZO.getPackId(), BlessedPacks.ZOZO.getPackKey(), false));
|
||||
AppDependencies.getJobManager().add(StickerPackDownloadJob.forInstall(BlessedPacks.BANDIT.getPackId(), BlessedPacks.BANDIT.getPackKey(), false));
|
||||
AppDependencies.getJobManager().add(StickerPackDownloadJob.forInstall(BlessedPacks.DAY_BY_DAY.getPackId(), BlessedPacks.DAY_BY_DAY.getPackKey(), false));
|
||||
AppDependencies.getJobManager().add(StickerPackDownloadJob.forReference(BlessedPacks.SWOON_HANDS.getPackId(), BlessedPacks.SWOON_HANDS.getPackKey()));
|
||||
AppDependencies.getJobManager().add(StickerPackDownloadJob.forReference(BlessedPacks.SWOON_FACES.getPackId(), BlessedPacks.SWOON_FACES.getPackKey()));
|
||||
AppDependencies.getJobManager().addAll(BlessedPacks.getFirstInstallJobs());
|
||||
EmojiSearchIndexDownloadJob.scheduleImmediately();
|
||||
DeleteAbandonedAttachmentsJob.enqueue();
|
||||
|
||||
@@ -87,10 +79,6 @@ public final class AppInitialization {
|
||||
SignalStore.settings().setPassphraseDisabled(true);
|
||||
AppDependencies.getMegaphoneRepository().onFirstEverAppLaunch();
|
||||
SignalStore.onFirstEverAppLaunch();
|
||||
AppDependencies.getJobManager().add(StickerPackDownloadJob.forInstall(BlessedPacks.ZOZO.getPackId(), BlessedPacks.ZOZO.getPackKey(), false));
|
||||
AppDependencies.getJobManager().add(StickerPackDownloadJob.forInstall(BlessedPacks.BANDIT.getPackId(), BlessedPacks.BANDIT.getPackKey(), false));
|
||||
AppDependencies.getJobManager().add(StickerPackDownloadJob.forInstall(BlessedPacks.DAY_BY_DAY.getPackId(), BlessedPacks.DAY_BY_DAY.getPackKey(), false));
|
||||
AppDependencies.getJobManager().add(StickerPackDownloadJob.forReference(BlessedPacks.SWOON_HANDS.getPackId(), BlessedPacks.SWOON_HANDS.getPackKey()));
|
||||
AppDependencies.getJobManager().add(StickerPackDownloadJob.forReference(BlessedPacks.SWOON_FACES.getPackId(), BlessedPacks.SWOON_FACES.getPackKey()));
|
||||
AppDependencies.getJobManager().addAll(BlessedPacks.getFirstInstallJobs());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,69 +0,0 @@
|
||||
package org.thoughtcrime.securesms.stickers;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
import org.whispersystems.signalservice.internal.util.JsonUtil;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* Maintains a list of "blessed" sticker packs that essentially serve as defaults.
|
||||
*/
|
||||
public final class BlessedPacks {
|
||||
|
||||
public static final Pack ZOZO = new Pack("fb535407d2f6497ec074df8b9c51dd1d", "17e971c134035622781d2ee249e6473b774583750b68c11bb82b7509c68b6dfd");
|
||||
public static final Pack BANDIT = new Pack("9acc9e8aba563d26a4994e69263e3b25", "5a6dff3948c28efb9b7aaf93ecc375c69fc316e78077ed26867a14d10a0f6a12");
|
||||
public static final Pack SWOON_HANDS = new Pack("e61fa0867031597467ccc036cc65d403", "13ae7b1a7407318280e9b38c1261ded38e0e7138b9f964a6ccbb73e40f737a9b");
|
||||
public static final Pack SWOON_FACES = new Pack("cca32f5b905208b7d0f1e17f23fdc185", "8bf8e95f7a45bdeafe0c8f5b002ef01ab95b8f1b5baac4019ccd6b6be0b1837a");
|
||||
public static final Pack DAY_BY_DAY = new Pack("cfc50156556893ef9838069d3890fe49", "5f5beab7d382443cb00a1e48eb95297b6b8cadfd0631e5d0d9dc949e6999ff4b");
|
||||
public static final Pack MY_DAILY_LIFE = new Pack("ccc89a05dc077856b57351e90697976c", "45730e60f09d5566115223744537a6b7d9ea99ceeacb77a1fbd6801b9607fbcf");
|
||||
|
||||
private static final Set<String> BLESSED_PACK_IDS = new HashSet<String>() {{
|
||||
add(ZOZO.getPackId());
|
||||
add(BANDIT.getPackId());
|
||||
add(SWOON_HANDS.getPackId());
|
||||
add(SWOON_FACES.getPackId());
|
||||
add(DAY_BY_DAY.getPackId());
|
||||
add(MY_DAILY_LIFE.getPackId());
|
||||
}};
|
||||
|
||||
public static boolean contains(@NonNull String packId) {
|
||||
return BLESSED_PACK_IDS.contains(packId);
|
||||
}
|
||||
|
||||
public static class Pack {
|
||||
@JsonProperty private final String packId;
|
||||
@JsonProperty private final String packKey;
|
||||
|
||||
public Pack(@NonNull @JsonProperty("packId") String packId,
|
||||
@NonNull @JsonProperty("packKey") String packKey)
|
||||
{
|
||||
this.packId = packId;
|
||||
this.packKey = packKey;
|
||||
}
|
||||
|
||||
public @NonNull String getPackId() {
|
||||
return packId;
|
||||
}
|
||||
|
||||
public @NonNull String getPackKey() {
|
||||
return packKey;
|
||||
}
|
||||
|
||||
public @NonNull String toJson() {
|
||||
return JsonUtil.toJson(this);
|
||||
}
|
||||
|
||||
public static @NonNull Pack fromJson(@NonNull String json) {
|
||||
try {
|
||||
return JsonUtil.fromJson(json, Pack.class);
|
||||
} catch (IOException e) {
|
||||
throw new AssertionError(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,113 @@
|
||||
package org.thoughtcrime.securesms.stickers
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty
|
||||
import org.thoughtcrime.securesms.jobmanager.Job
|
||||
import org.thoughtcrime.securesms.jobs.StickerPackDownloadJob
|
||||
import org.whispersystems.signalservice.internal.util.JsonUtil
|
||||
|
||||
/**
|
||||
* Maintains a list of "blessed" sticker packs that essentially serve as defaults.
|
||||
*/
|
||||
object BlessedPacks {
|
||||
|
||||
@JvmField
|
||||
val ZOZO = Pack("fb535407d2f6497ec074df8b9c51dd1d", "17e971c134035622781d2ee249e6473b774583750b68c11bb82b7509c68b6dfd")
|
||||
|
||||
@JvmField
|
||||
val BANDIT = Pack("9acc9e8aba563d26a4994e69263e3b25", "5a6dff3948c28efb9b7aaf93ecc375c69fc316e78077ed26867a14d10a0f6a12")
|
||||
|
||||
@JvmField
|
||||
val SWOON_HANDS = Pack("e61fa0867031597467ccc036cc65d403", "13ae7b1a7407318280e9b38c1261ded38e0e7138b9f964a6ccbb73e40f737a9b")
|
||||
|
||||
@JvmField
|
||||
val SWOON_FACES = Pack("cca32f5b905208b7d0f1e17f23fdc185", "8bf8e95f7a45bdeafe0c8f5b002ef01ab95b8f1b5baac4019ccd6b6be0b1837a")
|
||||
|
||||
@JvmField
|
||||
val DAY_BY_DAY = Pack("cfc50156556893ef9838069d3890fe49", "5f5beab7d382443cb00a1e48eb95297b6b8cadfd0631e5d0d9dc949e6999ff4b")
|
||||
|
||||
@JvmField
|
||||
val MY_DAILY_LIFE = Pack("ccc89a05dc077856b57351e90697976c", "45730e60f09d5566115223744537a6b7d9ea99ceeacb77a1fbd6801b9607fbcf")
|
||||
|
||||
private val packs = listOf(
|
||||
BlessedPackInfo(
|
||||
pack = ZOZO,
|
||||
installMode = BlessedPackInfo.InstallMode.InstallByDefault
|
||||
),
|
||||
BlessedPackInfo(
|
||||
pack = BANDIT,
|
||||
installMode = BlessedPackInfo.InstallMode.InstallByDefault
|
||||
),
|
||||
BlessedPackInfo(
|
||||
pack = DAY_BY_DAY,
|
||||
installMode = BlessedPackInfo.InstallMode.InstallByDefault
|
||||
),
|
||||
BlessedPackInfo(
|
||||
pack = MY_DAILY_LIFE,
|
||||
installMode = BlessedPackInfo.InstallMode.InstallByDefault
|
||||
),
|
||||
BlessedPackInfo(
|
||||
pack = SWOON_HANDS,
|
||||
installMode = BlessedPackInfo.InstallMode.AvailableAsReference
|
||||
),
|
||||
BlessedPackInfo(
|
||||
pack = SWOON_FACES,
|
||||
installMode = BlessedPackInfo.InstallMode.AvailableAsReference
|
||||
)
|
||||
)
|
||||
|
||||
private val packIds: Set<String> by lazy {
|
||||
packs.map { it.pack.packId }.toSet()
|
||||
}
|
||||
|
||||
/**
|
||||
* A list of [Job]s you should run on first app launch to install all of the required packs.
|
||||
*/
|
||||
@JvmStatic
|
||||
fun getFirstInstallJobs(): List<Job> {
|
||||
val installedByDefault = packs
|
||||
.filter { it.installMode == BlessedPackInfo.InstallMode.InstallByDefault }
|
||||
.map { it.pack }
|
||||
.map { StickerPackDownloadJob.forInstall(it.packId, it.packKey, false) }
|
||||
|
||||
val availableForReference = packs
|
||||
.filter { it.installMode == BlessedPackInfo.InstallMode.AvailableAsReference }
|
||||
.map { it.pack }
|
||||
.map { StickerPackDownloadJob.forReference(it.packId, it.packKey) }
|
||||
|
||||
return installedByDefault + availableForReference
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun contains(packId: String): Boolean {
|
||||
return packIds.contains(packId)
|
||||
}
|
||||
|
||||
private data class BlessedPackInfo(
|
||||
val pack: Pack,
|
||||
val installMode: InstallMode
|
||||
) {
|
||||
enum class InstallMode {
|
||||
/** Install the pack on initial app launch. */
|
||||
InstallByDefault,
|
||||
|
||||
/** Do not fully install the pack. Instead, have it show up as an "available" pack in the sticker manager. */
|
||||
AvailableAsReference
|
||||
}
|
||||
}
|
||||
|
||||
class Pack(
|
||||
@field:JsonProperty val packId: String,
|
||||
@field:JsonProperty val packKey: String
|
||||
) {
|
||||
fun toJson(): String {
|
||||
return JsonUtil.toJson(this)
|
||||
}
|
||||
|
||||
companion object {
|
||||
@JvmStatic
|
||||
fun fromJson(json: String): Pack {
|
||||
return JsonUtil.fromJson(json, Pack::class.java)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user