mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-19 00:01:08 +01:00
Promote the new APNG renderer to a normal flag.
This commit is contained in:
committed by
Cody Henthorne
parent
eb8ad5218d
commit
089d8a50b2
@@ -12,6 +12,6 @@ sealed interface LabsSettingsEvents {
|
|||||||
data class ToggleGroupSuggestionsForMembers(val enabled: Boolean) : LabsSettingsEvents
|
data class ToggleGroupSuggestionsForMembers(val enabled: Boolean) : LabsSettingsEvents
|
||||||
data class ToggleBetterSearch(val enabled: Boolean) : LabsSettingsEvents
|
data class ToggleBetterSearch(val enabled: Boolean) : LabsSettingsEvents
|
||||||
data class ToggleAutoLowerHand(val enabled: Boolean) : LabsSettingsEvents
|
data class ToggleAutoLowerHand(val enabled: Boolean) : LabsSettingsEvents
|
||||||
data class ToggleNewApngRenderer(val enabled: Boolean) : LabsSettingsEvents
|
|
||||||
data class ToggleStarredMessages(val enabled: Boolean) : LabsSettingsEvents
|
data class ToggleStarredMessages(val enabled: Boolean) : LabsSettingsEvents
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -143,15 +143,6 @@ private fun LabsSettingsContent(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
item {
|
|
||||||
Rows.ToggleRow(
|
|
||||||
checked = state.newApngRenderer,
|
|
||||||
text = "New APNG Renderer",
|
|
||||||
label = "Use the new custom APNG renderer instead of the existing third-party library. Requires an app restart to take effect.",
|
|
||||||
onCheckChanged = { onEvent(LabsSettingsEvents.ToggleNewApngRenderer(it)) }
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
item {
|
item {
|
||||||
Rows.ToggleRow(
|
Rows.ToggleRow(
|
||||||
checked = state.starredMessages,
|
checked = state.starredMessages,
|
||||||
|
|||||||
@@ -15,6 +15,6 @@ data class LabsSettingsState(
|
|||||||
val groupSuggestionsForMembers: Boolean = false,
|
val groupSuggestionsForMembers: Boolean = false,
|
||||||
val betterSearch: Boolean = false,
|
val betterSearch: Boolean = false,
|
||||||
val autoLowerHand: Boolean = false,
|
val autoLowerHand: Boolean = false,
|
||||||
val newApngRenderer: Boolean = false,
|
|
||||||
val starredMessages: Boolean = false
|
val starredMessages: Boolean = false
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -41,10 +41,7 @@ class LabsSettingsViewModel : ViewModel() {
|
|||||||
SignalStore.labs.autoLowerHand = event.enabled
|
SignalStore.labs.autoLowerHand = event.enabled
|
||||||
_state.value = _state.value.copy(autoLowerHand = event.enabled)
|
_state.value = _state.value.copy(autoLowerHand = event.enabled)
|
||||||
}
|
}
|
||||||
is LabsSettingsEvents.ToggleNewApngRenderer -> {
|
|
||||||
SignalStore.labs.newApngRenderer = event.enabled
|
|
||||||
_state.value = _state.value.copy(newApngRenderer = event.enabled)
|
|
||||||
}
|
|
||||||
is LabsSettingsEvents.ToggleStarredMessages -> {
|
is LabsSettingsEvents.ToggleStarredMessages -> {
|
||||||
SignalStore.labs.starredMessages = event.enabled
|
SignalStore.labs.starredMessages = event.enabled
|
||||||
_state.value = _state.value.copy(starredMessages = event.enabled)
|
_state.value = _state.value.copy(starredMessages = event.enabled)
|
||||||
@@ -60,7 +57,7 @@ class LabsSettingsViewModel : ViewModel() {
|
|||||||
groupSuggestionsForMembers = SignalStore.labs.groupSuggestionsForMembers,
|
groupSuggestionsForMembers = SignalStore.labs.groupSuggestionsForMembers,
|
||||||
betterSearch = SignalStore.labs.betterSearch,
|
betterSearch = SignalStore.labs.betterSearch,
|
||||||
autoLowerHand = SignalStore.labs.autoLowerHand,
|
autoLowerHand = SignalStore.labs.autoLowerHand,
|
||||||
newApngRenderer = SignalStore.labs.newApngRenderer,
|
|
||||||
starredMessages = SignalStore.labs.starredMessages
|
starredMessages = SignalStore.labs.starredMessages
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ import org.signal.glide.decryptableuri.DecryptableUri;
|
|||||||
import org.signal.glide.decryptableuri.DecryptableUriStreamLoader;
|
import org.signal.glide.decryptableuri.DecryptableUriStreamLoader;
|
||||||
import org.thoughtcrime.securesms.mms.RegisterGlideComponents;
|
import org.thoughtcrime.securesms.mms.RegisterGlideComponents;
|
||||||
import org.thoughtcrime.securesms.mms.SignalGlideModule;
|
import org.thoughtcrime.securesms.mms.SignalGlideModule;
|
||||||
import org.thoughtcrime.securesms.keyvalue.SignalStore;
|
import org.thoughtcrime.securesms.util.RemoteConfig;
|
||||||
import org.thoughtcrime.securesms.stickers.StickerRemoteUri;
|
import org.thoughtcrime.securesms.stickers.StickerRemoteUri;
|
||||||
import org.thoughtcrime.securesms.stickers.StickerRemoteUriLoader;
|
import org.thoughtcrime.securesms.stickers.StickerRemoteUriLoader;
|
||||||
import org.thoughtcrime.securesms.stories.StoryTextPostModel;
|
import org.thoughtcrime.securesms.stories.StoryTextPostModel;
|
||||||
@@ -92,7 +92,7 @@ public class SignalGlideComponents implements RegisterGlideComponents {
|
|||||||
registry.prepend(BitmapDrawable.class, new BitmapDrawableEncoder(glide.getBitmapPool(), encryptedBitmapResourceEncoder));
|
registry.prepend(BitmapDrawable.class, new BitmapDrawableEncoder(glide.getBitmapPool(), encryptedBitmapResourceEncoder));
|
||||||
|
|
||||||
|
|
||||||
if (SignalStore.labs().getNewApngRenderer()) {
|
if (RemoteConfig.newApngRenderer()) {
|
||||||
registry.prepend(InputStreamFactory.class, ApngDecoder.class, new ApngInputStreamFactoryResourceDecoder());
|
registry.prepend(InputStreamFactory.class, ApngDecoder.class, new ApngInputStreamFactoryResourceDecoder());
|
||||||
registry.prepend(ApngDecoder.class, new EncryptedApngResourceEncoder(secret));
|
registry.prepend(ApngDecoder.class, new EncryptedApngResourceEncoder(secret));
|
||||||
registry.prepend(File.class, ApngDecoder.class, new EncryptedApngCacheDecoder(secret));
|
registry.prepend(File.class, ApngDecoder.class, new EncryptedApngCacheDecoder(secret));
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ class LabsValues internal constructor(store: KeyValueStore) : SignalStoreValues(
|
|||||||
const val GROUP_SUGGESTIONS_FOR_MEMBERS: String = "labs.group_suggestions_for_members"
|
const val GROUP_SUGGESTIONS_FOR_MEMBERS: String = "labs.group_suggestions_for_members"
|
||||||
const val BETTER_SEARCH: String = "labs.better_search"
|
const val BETTER_SEARCH: String = "labs.better_search"
|
||||||
const val AUTO_LOWER_HAND: String = "labs.auto_lower_hand"
|
const val AUTO_LOWER_HAND: String = "labs.auto_lower_hand"
|
||||||
const val NEW_APNG_RENDERER: String = "labs.new_apng_renderer"
|
|
||||||
const val STARRED_MESSAGES: String = "labs.starred_messages"
|
const val STARRED_MESSAGES: String = "labs.starred_messages"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -30,8 +30,6 @@ class LabsValues internal constructor(store: KeyValueStore) : SignalStoreValues(
|
|||||||
|
|
||||||
var autoLowerHand by booleanValue(AUTO_LOWER_HAND, true).falseForExternalUsers()
|
var autoLowerHand by booleanValue(AUTO_LOWER_HAND, true).falseForExternalUsers()
|
||||||
|
|
||||||
var newApngRenderer by booleanValue(NEW_APNG_RENDERER, true).falseForExternalUsers()
|
|
||||||
|
|
||||||
var starredMessages by booleanValue(STARRED_MESSAGES, true).falseForExternalUsers()
|
var starredMessages by booleanValue(STARRED_MESSAGES, true).falseForExternalUsers()
|
||||||
|
|
||||||
private fun SignalStoreValueDelegate<Boolean>.falseForExternalUsers(): SignalStoreValueDelegate<Boolean> {
|
private fun SignalStoreValueDelegate<Boolean>.falseForExternalUsers(): SignalStoreValueDelegate<Boolean> {
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import androidx.annotation.RequiresApi;
|
|||||||
|
|
||||||
import org.signal.core.util.logging.Log;
|
import org.signal.core.util.logging.Log;
|
||||||
import org.thoughtcrime.securesms.dependencies.AppDependencies;
|
import org.thoughtcrime.securesms.dependencies.AppDependencies;
|
||||||
import org.thoughtcrime.securesms.keyvalue.SignalStore;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Easy access to various properties of the device, typically to make performance-related decisions.
|
* Easy access to various properties of the device, typically to make performance-related decisions.
|
||||||
@@ -26,7 +26,7 @@ public final class DeviceProperties {
|
|||||||
* large numbers of APNGs simultaneously.
|
* large numbers of APNGs simultaneously.
|
||||||
*/
|
*/
|
||||||
public static boolean shouldAllowApngStickerAnimation(@NonNull Context context) {
|
public static boolean shouldAllowApngStickerAnimation(@NonNull Context context) {
|
||||||
if (SignalStore.labs().getNewApngRenderer()) {
|
if (RemoteConfig.newApngRenderer()) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1326,5 +1326,16 @@ object RemoteConfig {
|
|||||||
hotSwappable = true
|
hotSwappable = true
|
||||||
)
|
)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether to use the new custom APNG renderer instead of the existing third-party library.
|
||||||
|
*/
|
||||||
|
@JvmStatic
|
||||||
|
@get:JvmName("newApngRenderer")
|
||||||
|
val newApngRenderer: Boolean by remoteBoolean(
|
||||||
|
key = "android.newApngRenderer",
|
||||||
|
defaultValue = false,
|
||||||
|
hotSwappable = false
|
||||||
|
)
|
||||||
|
|
||||||
// endregion
|
// endregion
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user