mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-20 00:29:11 +01:00
Add support for backing up wallpapers.
This commit is contained in:
@@ -9,7 +9,6 @@ import org.signal.core.util.concurrent.SignalExecutors;
|
||||
import org.thoughtcrime.securesms.conversation.colors.ChatColors;
|
||||
import org.thoughtcrime.securesms.conversation.colors.ChatColorsPalette;
|
||||
import org.thoughtcrime.securesms.database.SignalDatabase;
|
||||
import org.thoughtcrime.securesms.dependencies.AppDependencies;
|
||||
import org.thoughtcrime.securesms.keyvalue.SignalStore;
|
||||
import org.thoughtcrime.securesms.recipients.Recipient;
|
||||
import org.thoughtcrime.securesms.recipients.RecipientId;
|
||||
@@ -50,7 +49,7 @@ class ChatWallpaperRepository {
|
||||
EXECUTOR.execute(() -> {
|
||||
List<ChatWallpaper> wallpapers = new ArrayList<>(ChatWallpaper.BuiltIns.INSTANCE.getAllBuiltIns());
|
||||
|
||||
wallpapers.addAll(WallpaperStorage.getAll(AppDependencies.getApplication()));
|
||||
wallpapers.addAll(WallpaperStorage.getAll());
|
||||
consumer.accept(wallpapers);
|
||||
});
|
||||
}
|
||||
@@ -59,17 +58,17 @@ class ChatWallpaperRepository {
|
||||
if (recipientId != null) {
|
||||
//noinspection CodeBlock2Expr
|
||||
EXECUTOR.execute(() -> {
|
||||
SignalDatabase.recipients().setWallpaper(recipientId, chatWallpaper);
|
||||
SignalDatabase.recipients().setWallpaper(recipientId, chatWallpaper, true);
|
||||
onWallpaperSaved.run();
|
||||
});
|
||||
} else {
|
||||
SignalStore.wallpaper().setWallpaper(AppDependencies.getApplication(), chatWallpaper);
|
||||
SignalStore.wallpaper().setWallpaper(chatWallpaper);
|
||||
onWallpaperSaved.run();
|
||||
}
|
||||
}
|
||||
|
||||
void resetAllWallpaper(@NonNull Runnable onWallpaperReset) {
|
||||
SignalStore.wallpaper().setWallpaper(AppDependencies.getApplication(), null);
|
||||
SignalStore.wallpaper().setWallpaper(null);
|
||||
EXECUTOR.execute(() -> {
|
||||
SignalDatabase.recipients().resetAllWallpaper();
|
||||
onWallpaperReset.run();
|
||||
@@ -95,7 +94,8 @@ class ChatWallpaperRepository {
|
||||
.setWallpaper(recipientId,
|
||||
ChatWallpaperFactory.updateWithDimming(recipient.getWallpaper(),
|
||||
dimInDarkTheme ? ChatWallpaper.FIXED_DIM_LEVEL_FOR_DARK_THEME
|
||||
: 0f));
|
||||
: 0f),
|
||||
false);
|
||||
} else {
|
||||
throw new IllegalStateException("Unexpected call to setDimInDarkTheme, no wallpaper has been set on the given recipient or globally.");
|
||||
}
|
||||
|
||||
@@ -17,42 +17,42 @@ import java.util.Objects;
|
||||
|
||||
public final class GradientChatWallpaper implements ChatWallpaper, Parcelable {
|
||||
|
||||
public static final ChatWallpaper SUNSET = new GradientChatWallpaper(168f,
|
||||
new int[] { 0xFFF3DC47, 0xFFF3DA47, 0xFFF2D546, 0xFFF2CC46, 0xFFF1C146, 0xFFEFB445, 0xFFEEA544, 0xFFEC9644, 0xFFEB8743, 0xFFE97743, 0xFFE86942, 0xFFE65C41, 0xFFE55041, 0xFFE54841, 0xFFE44240, 0xFFE44040 },
|
||||
new float[] { 0.0f, 0.0807f, 0.1554f, 0.225f, 0.2904f, 0.3526f, 0.4125f, 0.471f, 0.529f, 0.5875f, 0.6474f, 0.7096f, 0.775f, 0.8446f, 0.9193f, 1f },
|
||||
0f);
|
||||
public static final ChatWallpaper NOIR = new GradientChatWallpaper(180f,
|
||||
new int[] { 0xFF16161D, 0xFF17171E, 0xFF1A1A22, 0xFF1F1F28, 0xFF26262F, 0xFF2D2D38, 0xFF353542, 0xFF3E3E4C, 0xFF474757, 0xFF4F4F61, 0xFF57576B, 0xFF5F5F74, 0xFF65657C, 0xFF6A6A82, 0xFF6D6D85, 0xFF6E6E87 },
|
||||
new float[] { 0.0000f, 0.0807f, 0.1554f, 0.2250f, 0.2904f, 0.3526f, 0.4125f, 0.4710f, 0.5290f, 0.5875f, 0.6474f, 0.7096f, 0.7750f, 0.8446f, 0.9193f, 1.0000f },
|
||||
0f);
|
||||
public static final ChatWallpaper HEATMAP = new GradientChatWallpaper(192f,
|
||||
new int[] { 0xFFF53844, 0xFFF33845, 0xFFEC3848, 0xFFE2384C, 0xFFD63851, 0xFFC73857, 0xFFB6385E, 0xFFA43866, 0xFF93376D, 0xFF813775, 0xFF70377C, 0xFF613782, 0xFF553787, 0xFF4B378B, 0xFF44378E, 0xFF42378F },
|
||||
new float[] { 0.0000f, 0.0075f, 0.0292f, 0.0637f, 0.1097f, 0.1659f, 0.2310f, 0.3037f, 0.3827f, 0.4666f, 0.5541f, 0.6439f, 0.7347f, 0.8252f, 0.9141f, 1.0000f },
|
||||
0f);
|
||||
public static final ChatWallpaper AQUA = new GradientChatWallpaper(180f,
|
||||
new int[] { 0xFF0093E9, 0xFF0294E9, 0xFF0696E7, 0xFF0D99E5, 0xFF169EE3, 0xFF21A3E0, 0xFF2DA8DD, 0xFF3AAEDA, 0xFF46B5D6, 0xFF53BBD3, 0xFF5FC0D0, 0xFF6AC5CD, 0xFF73CACB, 0xFF7ACDC9, 0xFF7ECFC7, 0xFF80D0C7 },
|
||||
new float[] { 0.0000f, 0.0807f, 0.1554f, 0.2250f, 0.2904f, 0.3526f, 0.4125f, 0.4710f, 0.5290f, 0.5875f, 0.6474f, 0.7096f, 0.7750f, 0.8446f, 0.9193f, 1.0000f },
|
||||
0f);
|
||||
public static final ChatWallpaper IRIDESCENT = new GradientChatWallpaper(192f,
|
||||
new int[] { 0xFFF04CE6, 0xFFEE4BE6, 0xFFE54AE5, 0xFFD949E5, 0xFFC946E4, 0xFFB644E3, 0xFFA141E3, 0xFF8B3FE2, 0xFF743CE1, 0xFF5E39E0, 0xFF4936DF, 0xFF3634DE, 0xFF2632DD, 0xFF1930DD, 0xFF112FDD, 0xFF0E2FDD },
|
||||
new float[] { 0.0000f, 0.0807f, 0.1554f, 0.2250f, 0.2904f, 0.3526f, 0.4125f, 0.4710f, 0.5290f, 0.5875f, 0.6474f, 0.7096f, 0.7750f, 0.8446f, 0.9193f, 1.0000f },
|
||||
0f);
|
||||
public static final ChatWallpaper MONSTERA = new GradientChatWallpaper(180f,
|
||||
new int[] { 0xFF65CDAC, 0xFF64CDAB, 0xFF60CBA8, 0xFF5BC8A3, 0xFF55C49D, 0xFF4DC096, 0xFF45BB8F, 0xFF3CB687, 0xFF33B17F, 0xFF2AAC76, 0xFF21A76F, 0xFF1AA268, 0xFF139F62, 0xFF0E9C5E, 0xFF0B9A5B, 0xFF0A995A },
|
||||
new float[] { 0.0000f, 0.0807f, 0.1554f, 0.2250f, 0.2904f, 0.3526f, 0.4125f, 0.4710f, 0.5290f, 0.5875f, 0.6474f, 0.7096f, 0.7750f, 0.8446f, 0.9193f, 1.0000f },
|
||||
0f);
|
||||
public static final ChatWallpaper BLISS = new GradientChatWallpaper(180f,
|
||||
new int[] { 0xFFD8E1FA, 0xFFD8E0F9, 0xFFD8DEF7, 0xFFD8DBF3, 0xFFD8D6EE, 0xFFD7D1E8, 0xFFD7CCE2, 0xFFD7C6DB, 0xFFD7BFD4, 0xFFD7B9CD, 0xFFD6B4C7, 0xFFD6AFC1, 0xFFD6AABC, 0xFFD6A7B8, 0xFFD6A5B6, 0xFFD6A4B5 },
|
||||
new float[] { 0.0000f, 0.0807f, 0.1554f, 0.2250f, 0.2904f, 0.3526f, 0.4125f, 0.4710f, 0.5290f, 0.5875f, 0.6474f, 0.7096f, 0.7750f, 0.8446f, 0.9193f, 1.0000f },
|
||||
0f);
|
||||
public static final ChatWallpaper SKY = new GradientChatWallpaper(180f,
|
||||
new int[] { 0xFFD8EBFD, 0xFFD7EAFD, 0xFFD5E9FD, 0xFFD2E7FD, 0xFFCDE5FD, 0xFFC8E3FD, 0xFFC3E0FD, 0xFFBDDDFC, 0xFFB7DAFC, 0xFFB2D7FC, 0xFFACD4FC, 0xFFA7D1FC, 0xFFA3CFFB, 0xFFA0CDFB, 0xFF9ECCFB, 0xFF9DCCFB },
|
||||
new float[] { 0.0000f, 0.0807f, 0.1554f, 0.2250f, 0.2904f, 0.3526f, 0.4125f, 0.4710f, 0.5290f, 0.5875f, 0.6474f, 0.7096f, 0.7750f, 0.8446f, 0.9193f, 1.0000f },
|
||||
0f);
|
||||
public static final ChatWallpaper PEACH = new GradientChatWallpaper(192f,
|
||||
new int[] { 0xFFFFE5C2, 0xFFFFE4C1, 0xFFFFE2BF, 0xFFFFDFBD, 0xFFFEDBB9, 0xFFFED6B5, 0xFFFED1B1, 0xFFFDCCAC, 0xFFFDC6A8, 0xFFFDC0A3, 0xFFFCBB9F, 0xFFFCB69B, 0xFFFCB297, 0xFFFCAF95, 0xFFFCAD93, 0xFFFCAC92 },
|
||||
new float[] { 0.0000f, 0.0807f, 0.1554f, 0.2250f, 0.2904f, 0.3526f, 0.4125f, 0.4710f, 0.5290f, 0.5875f, 0.6474f, 0.7096f, 0.7750f, 0.8446f, 0.9193f, 1.0000f },
|
||||
0f);
|
||||
public static final GradientChatWallpaper SUNSET = new GradientChatWallpaper(168f,
|
||||
new int[] { 0xFFF3DC47, 0xFFF3DA47, 0xFFF2D546, 0xFFF2CC46, 0xFFF1C146, 0xFFEFB445, 0xFFEEA544, 0xFFEC9644, 0xFFEB8743, 0xFFE97743, 0xFFE86942, 0xFFE65C41, 0xFFE55041, 0xFFE54841, 0xFFE44240, 0xFFE44040 },
|
||||
new float[] { 0.0f, 0.0807f, 0.1554f, 0.225f, 0.2904f, 0.3526f, 0.4125f, 0.471f, 0.529f, 0.5875f, 0.6474f, 0.7096f, 0.775f, 0.8446f, 0.9193f, 1f },
|
||||
0f);
|
||||
public static final GradientChatWallpaper NOIR = new GradientChatWallpaper(180f,
|
||||
new int[] { 0xFF16161D, 0xFF17171E, 0xFF1A1A22, 0xFF1F1F28, 0xFF26262F, 0xFF2D2D38, 0xFF353542, 0xFF3E3E4C, 0xFF474757, 0xFF4F4F61, 0xFF57576B, 0xFF5F5F74, 0xFF65657C, 0xFF6A6A82, 0xFF6D6D85, 0xFF6E6E87 },
|
||||
new float[] { 0.0000f, 0.0807f, 0.1554f, 0.2250f, 0.2904f, 0.3526f, 0.4125f, 0.4710f, 0.5290f, 0.5875f, 0.6474f, 0.7096f, 0.7750f, 0.8446f, 0.9193f, 1.0000f },
|
||||
0f);
|
||||
public static final GradientChatWallpaper HEATMAP = new GradientChatWallpaper(192f,
|
||||
new int[] { 0xFFF53844, 0xFFF33845, 0xFFEC3848, 0xFFE2384C, 0xFFD63851, 0xFFC73857, 0xFFB6385E, 0xFFA43866, 0xFF93376D, 0xFF813775, 0xFF70377C, 0xFF613782, 0xFF553787, 0xFF4B378B, 0xFF44378E, 0xFF42378F },
|
||||
new float[] { 0.0000f, 0.0075f, 0.0292f, 0.0637f, 0.1097f, 0.1659f, 0.2310f, 0.3037f, 0.3827f, 0.4666f, 0.5541f, 0.6439f, 0.7347f, 0.8252f, 0.9141f, 1.0000f },
|
||||
0f);
|
||||
public static final GradientChatWallpaper AQUA = new GradientChatWallpaper(180f,
|
||||
new int[] { 0xFF0093E9, 0xFF0294E9, 0xFF0696E7, 0xFF0D99E5, 0xFF169EE3, 0xFF21A3E0, 0xFF2DA8DD, 0xFF3AAEDA, 0xFF46B5D6, 0xFF53BBD3, 0xFF5FC0D0, 0xFF6AC5CD, 0xFF73CACB, 0xFF7ACDC9, 0xFF7ECFC7, 0xFF80D0C7 },
|
||||
new float[] { 0.0000f, 0.0807f, 0.1554f, 0.2250f, 0.2904f, 0.3526f, 0.4125f, 0.4710f, 0.5290f, 0.5875f, 0.6474f, 0.7096f, 0.7750f, 0.8446f, 0.9193f, 1.0000f },
|
||||
0f);
|
||||
public static final GradientChatWallpaper IRIDESCENT = new GradientChatWallpaper(192f,
|
||||
new int[] { 0xFFF04CE6, 0xFFEE4BE6, 0xFFE54AE5, 0xFFD949E5, 0xFFC946E4, 0xFFB644E3, 0xFFA141E3, 0xFF8B3FE2, 0xFF743CE1, 0xFF5E39E0, 0xFF4936DF, 0xFF3634DE, 0xFF2632DD, 0xFF1930DD, 0xFF112FDD, 0xFF0E2FDD },
|
||||
new float[] { 0.0000f, 0.0807f, 0.1554f, 0.2250f, 0.2904f, 0.3526f, 0.4125f, 0.4710f, 0.5290f, 0.5875f, 0.6474f, 0.7096f, 0.7750f, 0.8446f, 0.9193f, 1.0000f },
|
||||
0f);
|
||||
public static final GradientChatWallpaper MONSTERA = new GradientChatWallpaper(180f,
|
||||
new int[] { 0xFF65CDAC, 0xFF64CDAB, 0xFF60CBA8, 0xFF5BC8A3, 0xFF55C49D, 0xFF4DC096, 0xFF45BB8F, 0xFF3CB687, 0xFF33B17F, 0xFF2AAC76, 0xFF21A76F, 0xFF1AA268, 0xFF139F62, 0xFF0E9C5E, 0xFF0B9A5B, 0xFF0A995A },
|
||||
new float[] { 0.0000f, 0.0807f, 0.1554f, 0.2250f, 0.2904f, 0.3526f, 0.4125f, 0.4710f, 0.5290f, 0.5875f, 0.6474f, 0.7096f, 0.7750f, 0.8446f, 0.9193f, 1.0000f },
|
||||
0f);
|
||||
public static final GradientChatWallpaper BLISS = new GradientChatWallpaper(180f,
|
||||
new int[] { 0xFFD8E1FA, 0xFFD8E0F9, 0xFFD8DEF7, 0xFFD8DBF3, 0xFFD8D6EE, 0xFFD7D1E8, 0xFFD7CCE2, 0xFFD7C6DB, 0xFFD7BFD4, 0xFFD7B9CD, 0xFFD6B4C7, 0xFFD6AFC1, 0xFFD6AABC, 0xFFD6A7B8, 0xFFD6A5B6, 0xFFD6A4B5 },
|
||||
new float[] { 0.0000f, 0.0807f, 0.1554f, 0.2250f, 0.2904f, 0.3526f, 0.4125f, 0.4710f, 0.5290f, 0.5875f, 0.6474f, 0.7096f, 0.7750f, 0.8446f, 0.9193f, 1.0000f },
|
||||
0f);
|
||||
public static final GradientChatWallpaper SKY = new GradientChatWallpaper(180f,
|
||||
new int[] { 0xFFD8EBFD, 0xFFD7EAFD, 0xFFD5E9FD, 0xFFD2E7FD, 0xFFCDE5FD, 0xFFC8E3FD, 0xFFC3E0FD, 0xFFBDDDFC, 0xFFB7DAFC, 0xFFB2D7FC, 0xFFACD4FC, 0xFFA7D1FC, 0xFFA3CFFB, 0xFFA0CDFB, 0xFF9ECCFB, 0xFF9DCCFB },
|
||||
new float[] { 0.0000f, 0.0807f, 0.1554f, 0.2250f, 0.2904f, 0.3526f, 0.4125f, 0.4710f, 0.5290f, 0.5875f, 0.6474f, 0.7096f, 0.7750f, 0.8446f, 0.9193f, 1.0000f },
|
||||
0f);
|
||||
public static final GradientChatWallpaper PEACH = new GradientChatWallpaper(192f,
|
||||
new int[] { 0xFFFFE5C2, 0xFFFFE4C1, 0xFFFFE2BF, 0xFFFFDFBD, 0xFFFEDBB9, 0xFFFED6B5, 0xFFFED1B1, 0xFFFDCCAC, 0xFFFDC6A8, 0xFFFDC0A3, 0xFFFCBB9F, 0xFFFCB69B, 0xFFFCB297, 0xFFFCAF95, 0xFFFCAD93, 0xFFFCAC92 },
|
||||
new float[] { 0.0000f, 0.0807f, 0.1554f, 0.2250f, 0.2904f, 0.3526f, 0.4125f, 0.4710f, 0.5290f, 0.5875f, 0.6474f, 0.7096f, 0.7750f, 0.8446f, 0.9193f, 1.0000f },
|
||||
0f);
|
||||
|
||||
|
||||
private final float degrees;
|
||||
@@ -155,6 +155,10 @@ public final class GradientChatWallpaper implements ChatWallpaper, Parcelable {
|
||||
return result;
|
||||
}
|
||||
|
||||
public int[] getColors() {
|
||||
return colors;
|
||||
}
|
||||
|
||||
public static final Creator<GradientChatWallpaper> CREATOR = new Creator<GradientChatWallpaper>() {
|
||||
@Override
|
||||
public GradientChatWallpaper createFromParcel(Parcel in) {
|
||||
|
||||
@@ -14,18 +14,18 @@ import java.util.Objects;
|
||||
|
||||
public final class SingleColorChatWallpaper implements ChatWallpaper, Parcelable {
|
||||
|
||||
public static final ChatWallpaper BLUSH = new SingleColorChatWallpaper(0xFFE26983, 0f);
|
||||
public static final ChatWallpaper COPPER = new SingleColorChatWallpaper(0xFFDF9171, 0f);
|
||||
public static final ChatWallpaper DUST = new SingleColorChatWallpaper(0xFF9E9887, 0f);
|
||||
public static final ChatWallpaper CELADON = new SingleColorChatWallpaper(0xFF89AE8F, 0f);
|
||||
public static final ChatWallpaper RAINFOREST = new SingleColorChatWallpaper(0xFF146148, 0f);
|
||||
public static final ChatWallpaper PACIFIC = new SingleColorChatWallpaper(0xFF32C7E2, 0f);
|
||||
public static final ChatWallpaper FROST = new SingleColorChatWallpaper(0xFF7C99B6, 0f);
|
||||
public static final ChatWallpaper NAVY = new SingleColorChatWallpaper(0xFF403B91, 0f);
|
||||
public static final ChatWallpaper LILAC = new SingleColorChatWallpaper(0xFFC988E7, 0f);
|
||||
public static final ChatWallpaper PINK = new SingleColorChatWallpaper(0xFFE297C3, 0f);
|
||||
public static final ChatWallpaper EGGPLANT = new SingleColorChatWallpaper(0xFF624249, 0f);
|
||||
public static final ChatWallpaper SILVER = new SingleColorChatWallpaper(0xFFA2A2AA, 0f);
|
||||
public static final SingleColorChatWallpaper BLUSH = new SingleColorChatWallpaper(0xFFE26983, 0f);
|
||||
public static final SingleColorChatWallpaper COPPER = new SingleColorChatWallpaper(0xFFDF9171, 0f);
|
||||
public static final SingleColorChatWallpaper DUST = new SingleColorChatWallpaper(0xFF9E9887, 0f);
|
||||
public static final SingleColorChatWallpaper CELADON = new SingleColorChatWallpaper(0xFF89AE8F, 0f);
|
||||
public static final SingleColorChatWallpaper RAINFOREST = new SingleColorChatWallpaper(0xFF146148, 0f);
|
||||
public static final SingleColorChatWallpaper PACIFIC = new SingleColorChatWallpaper(0xFF32C7E2, 0f);
|
||||
public static final SingleColorChatWallpaper FROST = new SingleColorChatWallpaper(0xFF7C99B6, 0f);
|
||||
public static final SingleColorChatWallpaper NAVY = new SingleColorChatWallpaper(0xFF403B91, 0f);
|
||||
public static final SingleColorChatWallpaper LILAC = new SingleColorChatWallpaper(0xFFC988E7, 0f);
|
||||
public static final SingleColorChatWallpaper PINK = new SingleColorChatWallpaper(0xFFE297C3, 0f);
|
||||
public static final SingleColorChatWallpaper EGGPLANT = new SingleColorChatWallpaper(0xFF624249, 0f);
|
||||
public static final SingleColorChatWallpaper SILVER = new SingleColorChatWallpaper(0xFFA2A2AA, 0f);
|
||||
|
||||
private final @ColorInt int color;
|
||||
private final float dimLevelInDarkTheme;
|
||||
@@ -95,6 +95,10 @@ public final class SingleColorChatWallpaper implements ChatWallpaper, Parcelable
|
||||
return Objects.hash(color, dimLevelInDarkTheme);
|
||||
}
|
||||
|
||||
public int getColor() {
|
||||
return color;
|
||||
}
|
||||
|
||||
public static final Creator<SingleColorChatWallpaper> CREATOR = new Creator<SingleColorChatWallpaper>() {
|
||||
@Override
|
||||
public SingleColorChatWallpaper createFromParcel(Parcel in) {
|
||||
|
||||
@@ -27,7 +27,7 @@ import java.util.concurrent.ExecutionException;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.TimeoutException;
|
||||
|
||||
final class UriChatWallpaper implements ChatWallpaper, Parcelable {
|
||||
public final class UriChatWallpaper implements ChatWallpaper, Parcelable {
|
||||
|
||||
private static final LruCache<Uri, Bitmap> CACHE = new LruCache<Uri, Bitmap>((int) Runtime.getRuntime().maxMemory() / 8) {
|
||||
@Override
|
||||
@@ -118,6 +118,10 @@ final class UriChatWallpaper implements ChatWallpaper, Parcelable {
|
||||
return false;
|
||||
}
|
||||
|
||||
public @NonNull Uri getUri() {
|
||||
return uri;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NonNull Wallpaper serialize() {
|
||||
return new Wallpaper.Builder()
|
||||
|
||||
@@ -1,18 +1,19 @@
|
||||
package org.thoughtcrime.securesms.wallpaper;
|
||||
|
||||
import android.content.Context;
|
||||
import android.net.Uri;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.WorkerThread;
|
||||
|
||||
import org.signal.core.util.logging.Log;
|
||||
import org.thoughtcrime.securesms.attachments.AttachmentId;
|
||||
import org.thoughtcrime.securesms.database.SignalDatabase;
|
||||
import org.thoughtcrime.securesms.dependencies.AppDependencies;
|
||||
import org.thoughtcrime.securesms.jobs.UploadAttachmentToArchiveJob;
|
||||
import org.thoughtcrime.securesms.keyvalue.SignalStore;
|
||||
import org.thoughtcrime.securesms.mms.PartAuthority;
|
||||
import org.thoughtcrime.securesms.util.storage.FileStorage;
|
||||
import org.thoughtcrime.securesms.mms.PartUriParser;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.List;
|
||||
@@ -26,31 +27,28 @@ public final class WallpaperStorage {
|
||||
|
||||
private static final String TAG = Log.tag(WallpaperStorage.class);
|
||||
|
||||
private static final String DIRECTORY = "wallpapers";
|
||||
private static final String FILENAME_BASE = "wallpaper";
|
||||
|
||||
/**
|
||||
* Saves the provided input stream as a new wallpaper file.
|
||||
*/
|
||||
@WorkerThread
|
||||
public static @NonNull ChatWallpaper save(@NonNull Context context, @NonNull InputStream wallpaperStream, @NonNull String extension) throws IOException {
|
||||
String name = FileStorage.save(context, wallpaperStream, DIRECTORY, FILENAME_BASE, extension);
|
||||
public static @NonNull ChatWallpaper save(@NonNull InputStream wallpaperStream) throws IOException {
|
||||
AttachmentId attachmentId = SignalDatabase.attachments().insertWallpaper(wallpaperStream);
|
||||
|
||||
return ChatWallpaperFactory.create(PartAuthority.getWallpaperUri(name));
|
||||
if (SignalStore.backup().backsUpMedia()) {
|
||||
AppDependencies.getJobManager().add(new UploadAttachmentToArchiveJob(attachmentId));
|
||||
}
|
||||
|
||||
return ChatWallpaperFactory.create(PartAuthority.getAttachmentDataUri(attachmentId));
|
||||
}
|
||||
|
||||
@WorkerThread
|
||||
public static @NonNull InputStream read(@NonNull Context context, String filename) throws IOException {
|
||||
return FileStorage.read(context, DIRECTORY, filename);
|
||||
}
|
||||
|
||||
@WorkerThread
|
||||
public static @NonNull List<ChatWallpaper> getAll(@NonNull Context context) {
|
||||
return FileStorage.getAll(context, DIRECTORY, FILENAME_BASE)
|
||||
.stream()
|
||||
.map(PartAuthority::getWallpaperUri)
|
||||
.map(ChatWallpaperFactory::create)
|
||||
.collect(Collectors.toList());
|
||||
public static @NonNull List<ChatWallpaper> getAll() {
|
||||
return SignalDatabase.attachments()
|
||||
.getAllWallpapers()
|
||||
.stream()
|
||||
.map(PartAuthority::getAttachmentDataUri)
|
||||
.map(ChatWallpaperFactory::create)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -58,7 +56,7 @@ public final class WallpaperStorage {
|
||||
* if we discover it's unused, we'll delete the file.
|
||||
*/
|
||||
@WorkerThread
|
||||
public static void onWallpaperDeselected(@NonNull Context context, @NonNull Uri uri) {
|
||||
public static void onWallpaperDeselected(@NonNull Uri uri) {
|
||||
Uri globalUri = SignalStore.wallpaper().getWallpaperUri();
|
||||
if (Objects.equals(uri, globalUri)) {
|
||||
return;
|
||||
@@ -69,12 +67,7 @@ public final class WallpaperStorage {
|
||||
return;
|
||||
}
|
||||
|
||||
String filename = PartAuthority.getWallpaperFilename(uri);
|
||||
File directory = context.getDir(DIRECTORY, Context.MODE_PRIVATE);
|
||||
File wallpaperFile = new File(directory, filename);
|
||||
|
||||
if (!wallpaperFile.delete()) {
|
||||
Log.w(TAG, "Failed to delete " + filename + "!");
|
||||
}
|
||||
AttachmentId attachmentId = new PartUriParser(uri).getPartId();
|
||||
SignalDatabase.attachments().deleteAttachment(attachmentId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,14 +33,14 @@ final class WallpaperCropRepository {
|
||||
@WorkerThread
|
||||
@NonNull ChatWallpaper setWallPaper(byte[] bytes) throws IOException {
|
||||
try (InputStream inputStream = new ByteArrayInputStream(bytes)) {
|
||||
ChatWallpaper wallpaper = WallpaperStorage.save(context, inputStream, "webp");
|
||||
ChatWallpaper wallpaper = WallpaperStorage.save(inputStream);
|
||||
|
||||
if (recipientId != null) {
|
||||
Log.i(TAG, "Setting image wallpaper for " + recipientId);
|
||||
SignalDatabase.recipients().setWallpaper(recipientId, wallpaper);
|
||||
SignalDatabase.recipients().setWallpaper(recipientId, wallpaper, true);
|
||||
} else {
|
||||
Log.i(TAG, "Setting image wallpaper for default");
|
||||
SignalStore.wallpaper().setWallpaper(context, wallpaper);
|
||||
SignalStore.wallpaper().setWallpaper(wallpaper);
|
||||
}
|
||||
|
||||
return wallpaper;
|
||||
|
||||
Reference in New Issue
Block a user