Compare commits

...

6 Commits

Author SHA1 Message Date
Greyson Parrelli
fb06ec51f3 Bump version to 5.41.14 2022-07-05 14:12:03 -04:00
Greyson Parrelli
dda28f8c24 Improve resiliance of FCM fetch. 2022-07-05 14:10:36 -04:00
Cody Henthorne
236e3f7e81 Bump version to 5.41.13 2022-07-01 15:37:44 -04:00
Cody Henthorne
f772f98947 Fix clickable state bug with CircularProgressMaterialButton. 2022-07-01 15:22:12 -04:00
Cody Henthorne
597756122b Bump version to 5.41.12 2022-07-01 13:03:20 -04:00
Cody Henthorne
edc7d4d696 Fix disable state bug with CircularProgressMaterialButton. 2022-07-01 12:57:24 -04:00
6 changed files with 43 additions and 13 deletions

View File

@@ -58,14 +58,14 @@ ktlint {
}
def canonicalVersionCode = 1076
def canonicalVersionName = "5.41.11"
def canonicalVersionName = "5.41.14"
def postFixSize = 100
def abiPostFix = ['universal' : 0,
'armeabi-v7a' : 1,
'arm64-v8a' : 2,
'x86' : 3,
'x86_64' : 4]
def abiPostFix = ['universal' : 15,
'armeabi-v7a' : 16,
'arm64-v8a' : 17,
'x86' : 18,
'x86_64' : 19]
def keystores = [ 'debug' : loadKeystoreProperties('keystore.debug.properties') ]

View File

@@ -40,8 +40,11 @@ object FcmFetchManager {
@Volatile
private var startedForeground = false
/**
* @return True if a service was successfully started, otherwise false.
*/
@JvmStatic
fun enqueue(context: Context, foreground: Boolean) {
fun enqueue(context: Context, foreground: Boolean): Boolean {
synchronized(this) {
try {
if (foreground) {
@@ -63,8 +66,11 @@ object FcmFetchManager {
}
} catch (e: IllegalStateException) {
Log.w(TAG, "Failed to start service!", e)
return false
}
}
return true
}
private fun fetch(context: Context) {

View File

@@ -78,18 +78,25 @@ public class FcmReceiveService extends FirebaseMessagingService {
}
private static void handleReceivedNotification(Context context, @Nullable RemoteMessage remoteMessage) {
boolean enqueueSuccessful;
try {
long timeSinceLastRefresh = System.currentTimeMillis() - SignalStore.misc().getLastFcmForegroundServiceTime();
Log.d(TAG, String.format(Locale.US, "[handleReceivedNotification] API: %s, FeatureFlag: %s, RemoteMessagePriority: %s, TimeSinceLastRefresh: %s ms", Build.VERSION.SDK_INT, FeatureFlags.useFcmForegroundService(), remoteMessage != null ? remoteMessage.getPriority() : "n/a", timeSinceLastRefresh));
if (FeatureFlags.useFcmForegroundService() && Build.VERSION.SDK_INT >= 31 && remoteMessage != null && remoteMessage.getPriority() == RemoteMessage.PRIORITY_HIGH && timeSinceLastRefresh > FCM_FOREGROUND_INTERVAL) {
FcmFetchManager.enqueue(context, true);
enqueueSuccessful = FcmFetchManager.enqueue(context, true);
SignalStore.misc().setLastFcmForegroundServiceTime(System.currentTimeMillis());
} else {
FcmFetchManager.enqueue(context, false);
enqueueSuccessful = FcmFetchManager.enqueue(context, false);
}
} catch (Exception e) {
Log.w(TAG, "Failed to start service. Falling back to legacy approach.", e);
Log.w(TAG, "Failed to start service.", e);
enqueueSuccessful = false;
}
if (!enqueueSuccessful) {
Log.w(TAG, "Failed to start service. Falling back to legacy approach.");
FcmFetchManager.retrieveMessages(context);
}
}

View File

@@ -56,8 +56,8 @@ public class FcmRefreshJob extends BaseJob {
this(new Job.Parameters.Builder()
.setQueue("FcmRefreshJob")
.addConstraint(NetworkConstraint.KEY)
.setMaxAttempts(1)
.setLifespan(TimeUnit.MINUTES.toMillis(5))
.setMaxAttempts(3)
.setLifespan(TimeUnit.HOURS.toMillis(6))
.setMaxInstancesForFactory(1)
.build());
}
@@ -109,7 +109,7 @@ public class FcmRefreshJob extends BaseJob {
@Override
public void onFailure() {
Log.w(TAG, "GCM reregistration failed after retry attempt exhaustion!");
Log.w(TAG, "FCM reregistration failed after retry attempt exhaustion!");
}
@Override

View File

@@ -91,12 +91,14 @@ public class EditProfileNameFragment extends Fragment {
setEditTextEnabled(familyName, true);
break;
case IDLE:
saveButton.setClickable(true);
saveButton.cancelSpinning();
saveButton.setAlpha(1);
setEditTextEnabled(givenName, true);
setEditTextEnabled(familyName, true);
break;
case IN_PROGRESS:
saveButton.setClickable(false);
saveButton.setSpinning();
saveButton.setAlpha(1);
setEditTextEnabled(givenName, false);

View File

@@ -12,8 +12,10 @@ import androidx.annotation.StringRes
import androidx.core.animation.doOnEnd
import androidx.core.content.withStyledAttributes
import com.google.android.material.button.MaterialButton
import com.google.android.material.progressindicator.CircularProgressIndicator
import com.google.android.material.theme.overlay.MaterialThemeOverlay
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.util.visible
import kotlin.math.max
/**
@@ -33,6 +35,7 @@ class CircularProgressMaterialButton @JvmOverloads constructor(
private var animator: Animator? = null
private val materialButton: MaterialButton = findViewById(R.id.button)
private val progressIndicator: CircularProgressIndicator = findViewById(R.id.progress_indicator)
var text: CharSequence?
get() = materialButton.text
@@ -52,6 +55,18 @@ class CircularProgressMaterialButton @JvmOverloads constructor(
materialButton.setText(resId)
}
override fun setEnabled(enabled: Boolean) {
super.setEnabled(enabled)
materialButton.isEnabled = enabled
progressIndicator.visible = enabled
}
override fun setClickable(clickable: Boolean) {
super.setClickable(clickable)
materialButton.isClickable = clickable
progressIndicator.visible = clickable
}
override fun onSaveInstanceState(): Parcelable {
return Bundle().apply {
putParcelable(SUPER_STATE, super.onSaveInstanceState())