diff --git a/app/build.gradle b/app/build.gradle index 4626981308d..c1cfa86b747 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -61,8 +61,8 @@ protobuf { } } -def canonicalVersionCode = 788 -def canonicalVersionName = "5.4.2" +def canonicalVersionCode = 790 +def canonicalVersionName = "5.4.4" def postFixSize = 100 def abiPostFix = ['universal' : 0, @@ -335,7 +335,7 @@ dependencies { implementation project(':video') implementation 'org.signal:zkgroup-android:0.7.0' - implementation 'org.whispersystems:signal-client-android:0.2.3' + implementation 'org.whispersystems:signal-client-android:0.1.5' implementation 'com.google.protobuf:protobuf-javalite:3.10.0' implementation 'org.signal:argon2:13.1@aar' diff --git a/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java b/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java index 08036f53f31..694563f0f51 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java +++ b/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java @@ -124,6 +124,7 @@ public void onCreate() { Log.i(TAG, "onCreate()"); }) .addBlocking("crash-handling", this::initializeCrashHandling) + .addBlocking("notification-channels", () -> NotificationChannels.create(this)) .addBlocking("eat-db", () -> DatabaseFactory.getInstance(this)) .addBlocking("app-dependencies", this::initializeAppDependencies) .addBlocking("first-launch", this::initializeFirstEverAppLaunch) @@ -158,7 +159,6 @@ public void onCreate() { .addNonBlocking(() -> ApplicationDependencies.getJobManager().beginJobLoop()) .addPostRender(this::initializeExpiringMessageManager) .addPostRender(this::initializeBlobProvider) - .addPostRender(() -> NotificationChannels.create(this)) .execute(); Log.d(TAG, "onCreate() took " + (System.currentTimeMillis() - startTime) + " ms"); diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/ZoomingImageView.java b/app/src/main/java/org/thoughtcrime/securesms/components/ZoomingImageView.java index d3e0340f5e0..d0b790e9f5f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/ZoomingImageView.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/ZoomingImageView.java @@ -40,8 +40,12 @@ public class ZoomingImageView extends FrameLayout { private static final int ZOOM_TRANSITION_DURATION = 300; private static final float ZOOM_LEVEL_MIN = 1.0f; - private static final float ZOOM_LEVEL_MID = 1.5f; - private static final float ZOOM_LEVEL_MAX = 2.0f; + + private static final float LARGE_IMAGES_ZOOM_LEVEL_MID = 1.5f; + private static final float LARGE_IMAGES_ZOOM_LEVEL_MAX = 2.0f; + + private static final float SMALL_IMAGES_ZOOM_LEVEL_MID = 3.0f; + private static final float SMALL_IMAGES_ZOOM_LEVEL_MAX = 8.0f; private final PhotoView photoView; private final SubsamplingScaleImageView subsamplingImageView; @@ -65,10 +69,11 @@ public ZoomingImageView(Context context, AttributeSet attrs, int defStyleAttr) { this.subsamplingImageView.setOrientation(SubsamplingScaleImageView.ORIENTATION_USE_EXIF); this.photoView.setZoomTransitionDuration(ZOOM_TRANSITION_DURATION); - this.photoView.setScaleLevels(ZOOM_LEVEL_MIN, ZOOM_LEVEL_MID, ZOOM_LEVEL_MAX); + this.photoView.setScaleLevels(ZOOM_LEVEL_MIN, SMALL_IMAGES_ZOOM_LEVEL_MID, SMALL_IMAGES_ZOOM_LEVEL_MAX); this.subsamplingImageView.setDoubleTapZoomDuration(ZOOM_TRANSITION_DURATION); - this.subsamplingImageView.setDoubleTapZoomScale(ZOOM_LEVEL_MID); + this.subsamplingImageView.setDoubleTapZoomScale(LARGE_IMAGES_ZOOM_LEVEL_MID); + this.subsamplingImageView.setMaxScale(LARGE_IMAGES_ZOOM_LEVEL_MAX); this.photoView.setOnClickListener(v -> ZoomingImageView.this.callOnClick()); this.subsamplingImageView.setOnClickListener(v -> ZoomingImageView.this.callOnClick()); diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java index 2b0a7fbcb14..d8677714950 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java @@ -2003,7 +2003,9 @@ private void updateWallpaper(@Nullable ChatWallpaper chatWallpaper) { int toolbarColor = getResources().getColor(R.color.conversation_toolbar_color_wallpaper); toolbar.setBackgroundColor(toolbarColor); - WindowUtil.setStatusBarColor(getWindow(), toolbarColor); + if (Build.VERSION.SDK_INT > 21) { + WindowUtil.setStatusBarColor(getWindow(), toolbarColor); + } } else { wallpaper.setImageDrawable(null); wallpaperDim.setVisibility(View.GONE); @@ -2014,7 +2016,9 @@ private void updateWallpaper(@Nullable ChatWallpaper chatWallpaper) { int toolbarColor = getResources().getColor(R.color.conversation_toolbar_color); toolbar.setBackgroundColor(toolbarColor); - WindowUtil.setStatusBarColor(getWindow(), toolbarColor); + if (Build.VERSION.SDK_INT > 21) { + WindowUtil.setStatusBarColor(getWindow(), toolbarColor); + } } fragment.onWallpaperChanged(chatWallpaper); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationReactionOverlay.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationReactionOverlay.java index 66c6154eb70..b9191e27ea3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationReactionOverlay.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationReactionOverlay.java @@ -144,6 +144,41 @@ public void setListVerticalTranslation(float translationY) { maskView.setTargetParentTranslationY(translationY); } + private OnLayoutChangeListener createUpdateViewPositionsOnLayoutChangeListener(@NonNull View maskTarget, + int maskPaddingBottom, + @NonNull PointF lastSeenDownPoint) + { + return new OnLayoutChangeListener() { + @Override + public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) { + + final float scrubberTranslationY = Math.max(-scrubberDistanceFromTouchDown + actionBarHeight, + lastSeenDownPoint.y - scrubberHeight - scrubberDistanceFromTouchDown - statusBarHeight); + + final float halfWidth = scrubberWidth / 2f + scrubberHorizontalMargin; + final float screenWidth = getResources().getDisplayMetrics().widthPixels; + final float downX = ViewUtil.isLtr(ConversationReactionOverlay.this) ? lastSeenDownPoint.x : screenWidth - lastSeenDownPoint.x; + final float scrubberTranslationX = Util.clamp(downX - halfWidth, + scrubberHorizontalMargin, + screenWidth + scrubberHorizontalMargin - halfWidth * 2) * (ViewUtil.isLtr(ConversationReactionOverlay.this) ? 1 : -1); + + backgroundView.setTranslationX(scrubberTranslationX); + backgroundView.setTranslationY(scrubberTranslationY); + + foregroundView.setTranslationX(scrubberTranslationX); + foregroundView.setTranslationY(scrubberTranslationY); + + verticalScrubBoundary.update(lastSeenDownPoint.y - distanceFromTouchDownPointToTopOfScrubberDeadZone, + lastSeenDownPoint.y + distanceFromTouchDownPointToBottomOfScrubberDeadZone); + + maskView.setPadding(0, 0, 0, maskPaddingBottom); + maskView.setTarget(maskTarget); + + removeOnLayoutChangeListener(this); + } + }; + } + public void show(@NonNull Activity activity, @NonNull View maskTarget, @NonNull Recipient conversationRecipient, @@ -171,27 +206,7 @@ public void show(@NonNull Activity activity, statusBarHeight = ViewUtil.getStatusBarHeight(this); } - final float scrubberTranslationY = Math.max(-scrubberDistanceFromTouchDown + actionBarHeight, - lastSeenDownPoint.y - scrubberHeight - scrubberDistanceFromTouchDown - statusBarHeight); - - final float halfWidth = scrubberWidth / 2f + scrubberHorizontalMargin; - final float screenWidth = getResources().getDisplayMetrics().widthPixels; - final float downX = ViewUtil.isLtr(this) ? lastSeenDownPoint.x : screenWidth - lastSeenDownPoint.x; - final float scrubberTranslationX = Util.clamp(downX - halfWidth, - scrubberHorizontalMargin, - screenWidth + scrubberHorizontalMargin - halfWidth * 2) * (ViewUtil.isLtr(this) ? 1 : -1); - - backgroundView.setTranslationX(scrubberTranslationX); - backgroundView.setTranslationY(scrubberTranslationY); - - foregroundView.setTranslationX(scrubberTranslationX); - foregroundView.setTranslationY(scrubberTranslationY); - - verticalScrubBoundary.update(lastSeenDownPoint.y - distanceFromTouchDownPointToTopOfScrubberDeadZone, - lastSeenDownPoint.y + distanceFromTouchDownPointToBottomOfScrubberDeadZone); - - maskView.setPadding(0, 0, 0, maskPaddingBottom); - maskView.setTarget(maskTarget); + addOnLayoutChangeListener(createUpdateViewPositionsOnLayoutChangeListener(maskTarget, maskPaddingBottom, lastSeenDownPoint)); hideAnimatorSet.end(); toolbar.setVisibility(VISIBLE); diff --git a/app/src/main/java/org/thoughtcrime/securesms/crypto/storage/TextSecureSessionStore.java b/app/src/main/java/org/thoughtcrime/securesms/crypto/storage/TextSecureSessionStore.java index 267c02f805c..f06edd332fc 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/crypto/storage/TextSecureSessionStore.java +++ b/app/src/main/java/org/thoughtcrime/securesms/crypto/storage/TextSecureSessionStore.java @@ -60,8 +60,8 @@ public boolean containsSession(SignalProtocolAddress address) { SessionRecord sessionRecord = DatabaseFactory.getSessionDatabase(context).load(recipientId, address.getDeviceId()); return sessionRecord != null && - sessionRecord.hasSenderChain() && - sessionRecord.getSessionVersion() == CiphertextMessage.CURRENT_VERSION; + sessionRecord.getSessionState().hasSenderChain() && + sessionRecord.getSessionState().getSessionVersion() == CiphertextMessage.CURRENT_VERSION; } else { return false; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/helpers/SessionStoreMigrationHelper.java b/app/src/main/java/org/thoughtcrime/securesms/database/helpers/SessionStoreMigrationHelper.java index db106c45b90..6fcec92c8e5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/helpers/SessionStoreMigrationHelper.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/helpers/SessionStoreMigrationHelper.java @@ -10,6 +10,7 @@ import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.database.SessionDatabase; import org.whispersystems.libsignal.state.SessionRecord; +import org.whispersystems.libsignal.state.SessionState; import org.whispersystems.signalservice.api.push.SignalServiceAddress; import java.io.File; @@ -63,7 +64,9 @@ static void migrateSessions(Context context, SQLiteDatabase database) { if (versionMarker == SINGLE_STATE_VERSION) { Log.i(TAG, "Migrating single state version: " + sessionFile.getAbsolutePath()); - sessionRecord = SessionRecord.fromSingleSessionState(serialized); + SessionState sessionState = new SessionState(serialized); + + sessionRecord = new SessionRecord(sessionState); } else if (versionMarker >= ARCHIVE_STATES_VERSION) { Log.i(TAG, "Migrating session: " + sessionFile.getAbsolutePath()); sessionRecord = new SessionRecord(serialized); diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/migration/GroupsV1MigrationInitiationBottomSheetDialogFragment.java b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/migration/GroupsV1MigrationInitiationBottomSheetDialogFragment.java index 1afe479bbb6..7e0447ccc96 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/migration/GroupsV1MigrationInitiationBottomSheetDialogFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/migration/GroupsV1MigrationInitiationBottomSheetDialogFragment.java @@ -21,6 +21,7 @@ import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.util.BottomSheetUtil; import org.thoughtcrime.securesms.util.ThemeUtil; +import org.thoughtcrime.securesms.util.ViewUtil; import org.thoughtcrime.securesms.util.views.SimpleProgressDialog; /** @@ -38,6 +39,8 @@ public final class GroupsV1MigrationInitiationBottomSheetDialogFragment extends private GroupMemberListView ineligibleList; private TextView ineligibleTitle; private View ineligibleContainer; + private View upgradeButton; + private View spinner; public static void showForInitiation(@NonNull FragmentManager manager, @NonNull RecipientId groupRecipientId) { Bundle args = new Bundle(); @@ -71,6 +74,8 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat this.ineligibleContainer = view.findViewById(R.id.gv1_migrate_ineligible_container); this.ineligibleTitle = view.findViewById(R.id.gv1_migrate_ineligible_title); this.ineligibleList = view.findViewById(R.id.gv1_migrate_ineligible_list); + this.upgradeButton = view.findViewById(R.id.gv1_migrate_upgrade_button); + this.spinner = view.findViewById(R.id.gv1_migrate_spinner); inviteList.setNestedScrollingEnabled(false); ineligibleList.setNestedScrollingEnabled(false); @@ -82,8 +87,9 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat viewModel = ViewModelProviders.of(this, new GroupsV1MigrationInitiationViewModel.Factory(groupRecipientId)).get(GroupsV1MigrationInitiationViewModel.class); viewModel.getMigrationState().observe(getViewLifecycleOwner(), this::onMigrationStateChanged); + upgradeButton.setEnabled(false); + upgradeButton.setOnClickListener(v -> onUpgradeClicked()); view.findViewById(R.id.gv1_migrate_cancel_button).setOnClickListener(v -> dismiss()); - view.findViewById(R.id.gv1_migrate_upgrade_button).setOnClickListener(v -> onUpgradeClicked()); } @Override @@ -107,6 +113,9 @@ private void onMigrationStateChanged(@NonNull MigrationState migrationState) { } else { ineligibleContainer.setVisibility(View.GONE); } + + upgradeButton.setEnabled(true); + spinner.setVisibility(View.GONE); } private void onUpgradeClicked() { diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/migration/GroupsV1MigrationRepository.java b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/migration/GroupsV1MigrationRepository.java index 9bd0b40ae71..998e93bebfc 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/migration/GroupsV1MigrationRepository.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/migration/GroupsV1MigrationRepository.java @@ -20,6 +20,7 @@ import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.recipients.RecipientUtil; import org.thoughtcrime.securesms.transport.RetryLaterException; +import org.thoughtcrime.securesms.util.Util; import java.io.IOException; import java.util.Collections; @@ -83,7 +84,11 @@ private MigrationState getMigrationState(@NonNull RecipientId groupRecipientId) } try { - RecipientUtil.ensureUuidsAreAvailable(ApplicationDependencies.getApplication(), group.getParticipants()); + List registered = Stream.of(group.getParticipants()) + .filter(Recipient::isRegistered) + .toList(); + + RecipientUtil.ensureUuidsAreAvailable(ApplicationDependencies.getApplication(), registered); } catch (IOException e) { Log.w(TAG, "Failed to refresh UUIDs!", e); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/messageprocessingalarm/MessageProcessReceiver.java b/app/src/main/java/org/thoughtcrime/securesms/messageprocessingalarm/MessageProcessReceiver.java index e8c32ed1e32..b65ca28828a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messageprocessingalarm/MessageProcessReceiver.java +++ b/app/src/main/java/org/thoughtcrime/securesms/messageprocessingalarm/MessageProcessReceiver.java @@ -6,6 +6,8 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; +import android.os.Handler; +import android.os.Looper; import android.os.SystemClock; import androidx.annotation.NonNull; @@ -44,6 +46,8 @@ public void onReceive(@NonNull Context context, @NonNull Intent intent) { } else if (BROADCAST_ACTION.equals(intent.getAction())) { PendingResult pendingResult = goAsync(); + new Handler(Looper.getMainLooper()).postDelayed(pendingResult::finish, JOB_TIMEOUT); + SignalExecutors.BOUNDED.submit(() -> { Log.i(TAG, "Running PushNotificationReceiveJob"); @@ -51,8 +55,6 @@ public void onReceive(@NonNull Context context, @NonNull Intent intent) { .runSynchronously(PushNotificationReceiveJob.withDelayedForegroundService(FOREGROUND_DELAY), JOB_TIMEOUT); Log.i(TAG, "PushNotificationReceiveJob ended: " + (jobState.isPresent() ? jobState.get().toString() : "Job did not complete")); - - pendingResult.finish(); }); } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/notifications/DefaultMessageNotifier.java b/app/src/main/java/org/thoughtcrime/securesms/notifications/DefaultMessageNotifier.java index 597452d8971..f702cedc7fe 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/notifications/DefaultMessageNotifier.java +++ b/app/src/main/java/org/thoughtcrime/securesms/notifications/DefaultMessageNotifier.java @@ -271,6 +271,10 @@ public void updateNotification(@NonNull Context context, int reminderCount, @NonNull BubbleUtil.BubbleState defaultBubbleState) { + if (!TextSecurePreferences.isNotificationsEnabled(context)) { + return; + } + boolean isReminder = reminderCount > 0; Cursor telcoCursor = null; Cursor pushCursor = null; diff --git a/app/src/main/java/org/thoughtcrime/securesms/notifications/NotificationChannels.java b/app/src/main/java/org/thoughtcrime/securesms/notifications/NotificationChannels.java index 7ca1419c9c2..2a9cb66e3cc 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/notifications/NotificationChannels.java +++ b/app/src/main/java/org/thoughtcrime/securesms/notifications/NotificationChannels.java @@ -44,9 +44,10 @@ public class NotificationChannels { private static class Version { static final int MESSAGES_CATEGORY = 2; static final int CALLS_PRIORITY_BUMP = 3; + static final int VIBRATE_OFF_OTHER = 4; } - private static final int VERSION = 3; + private static final int VERSION = 4; private static final String CATEGORY_MESSAGES = "messages"; private static final String CONTACT_PREFIX = "contact_"; @@ -57,7 +58,7 @@ private static class Version { public static final String APP_UPDATES = "app_updates"; public static final String BACKUPS = "backups_v2"; public static final String LOCKED_STATUS = "locked_status_v2"; - public static final String OTHER = "other_v2"; + public static final String OTHER = "other_v3"; public static final String VOICE_NOTES = "voice_notes"; /** @@ -462,6 +463,8 @@ private static void onCreate(@NonNull Context context, @NonNull NotificationMana backups.setShowBadge(false); lockedStatus.setShowBadge(false); other.setShowBadge(false); + other.setVibrationPattern(new long[]{0}); + other.enableVibration(true); voiceNotes.setShowBadge(false); notificationManager.createNotificationChannels(Arrays.asList(messages, calls, failures, backups, lockedStatus, other, voiceNotes)); @@ -489,6 +492,10 @@ private static void onUpgrade(@NonNull NotificationManager notificationManager, if (oldVersion < Version.CALLS_PRIORITY_BUMP) { notificationManager.deleteNotificationChannel("calls_v2"); } + + if (oldVersion < Version.VIBRATE_OFF_OTHER) { + notificationManager.deleteNotificationChannel("other_v2"); + } } @TargetApi(26) diff --git a/app/src/main/java/org/thoughtcrime/securesms/profiles/spoofing/ReviewBannerView.java b/app/src/main/java/org/thoughtcrime/securesms/profiles/spoofing/ReviewBannerView.java index db94720f024..a4c45946d4d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/profiles/spoofing/ReviewBannerView.java +++ b/app/src/main/java/org/thoughtcrime/securesms/profiles/spoofing/ReviewBannerView.java @@ -8,6 +8,7 @@ import android.view.View; import android.view.ViewOutlineProvider; import android.widget.ImageView; +import android.widget.LinearLayout; import android.widget.TextView; import androidx.annotation.NonNull; @@ -26,9 +27,7 @@ /** * Banner displayed within a conversation when a review is suggested. */ -public class ReviewBannerView extends ConstraintLayout { - - private static final @Px int ELEVATION = ViewUtil.dpToPx(4); +public class ReviewBannerView extends LinearLayout { private ImageView bannerIcon; private TextView bannerMessage; @@ -62,16 +61,6 @@ protected void onFinishInflate() { bottomRightAvatar.setFallbackPhotoProvider(provider); bannerClose.setOnClickListener(v -> setVisibility(GONE)); - - if (Build.VERSION.SDK_INT >= 21) { - setOutlineProvider(new ViewOutlineProvider() { - @Override - public void getOutline(View view, Outline outline) { - outline.setRect(-100, -100, view.getWidth() + 100, view.getHeight() + ELEVATION); - } - }); - setElevation(ELEVATION); - } } public void setBannerMessage(@Nullable CharSequence charSequence) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/GenericForegroundService.java b/app/src/main/java/org/thoughtcrime/securesms/service/GenericForegroundService.java index 568cd8c06f7..08f4d889851 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/GenericForegroundService.java +++ b/app/src/main/java/org/thoughtcrime/securesms/service/GenericForegroundService.java @@ -112,6 +112,7 @@ private void postObligatoryForegroundNotification(@NonNull Entry active) { .setContentTitle(active.title) .setProgress(active.progressMax, active.progress, active.indeterminate) .setContentIntent(PendingIntent.getActivity(this, 0, MainActivity.clearTop(this), 0)) + .setVibrate(new long[]{0}) .build()); } diff --git a/app/src/main/res/layout/conversation_activity.xml b/app/src/main/res/layout/conversation_activity.xml index 93c042345cb..07512068cea 100644 --- a/app/src/main/res/layout/conversation_activity.xml +++ b/app/src/main/res/layout/conversation_activity.xml @@ -196,35 +196,38 @@ - + app:layout_constraintEnd_toEndOf="@id/parent_end_guideline"> - + - + + + + + + + + - + android:orientation="vertical"> + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index a8f4e215675..f261c1f15e2 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -26,10 +26,10 @@ Tap for at ændre din standard SMS applikation SMS deaktiveret Tap for at gøre Signal til din standard SMS app - aktivér - Aktivér - déaktiver - Déaktiver + aktiveret + Aktiveret + deaktiveret + Deaktiveret SMS %1$s, MMS %2$s Skærmlås %1$s, Registreringslås %2$s Tema %1$s, Sprog %2$s @@ -344,7 +344,7 @@ Verificer kodeord for backup Test dit kodeord for backup og verificer at det virker Aktivér - Déaktiver + Deaktiver For at gendanne fra backup, skal du installere Signal igen. Åbn app\'en og tap \"Gendan backup\", vælg derefter en backup fil %1$s Læs mere I gang… @@ -657,8 +657,8 @@ Udsæt notifikationer Brugerdefinerede notifikationer Indtil %1$s - Déaktiver - Aktivér + Deaktiveret + Aktiveret Tilføj til en gruppe Vis alle grupper Se alle @@ -1256,7 +1256,7 @@ nummer (%s) er ugyldigt Déaktiver registreringslås? Hvis du glemmer din PIN-kode til Signal ved genregistrering af Signal, vil du blive låst ude af din konto i 7 dage Aktivér - Deaktivér + Deaktiver Vis billede Se video @@ -1442,7 +1442,7 @@ Modtog en nøgle besked, for en ugyldig protokol-version Fejl ved levering af besked Markér alle som læst Markér som læst - Déaktiver disse notifikationer + Deaktiver disse notifikationer Se billed én gang Se video én gang Svar @@ -1982,7 +1982,7 @@ Modtog en nøgle besked, for en ugyldig protokol-version Proxy Brug proxy Deaktiveret - Aktivér + Aktiveret Proxy-adresse Brug kun en proxy, hvis du ikke er i stand til at oprette forbindelse til Signal på mobil eller Wi-Fi. Del @@ -2290,7 +2290,7 @@ Modtog en nøgle besked, for en ugyldig protokol-version PIN-koder sikrer information lagret med Signal er krypteret, så kun du kan få adgang til den. Din profil, indstillinger og kontakter gendannes, når du installerer Signal igen. Tilføj ekstra sikkerhed ved at kræve din Signal-pinkode til at registrere dit telefonnummer med Signal igen. Påmindelser hjælper dig med at huske din PIN, da den ikke kan gendannes. Over tid vil der gå længere tid imellem du bliver spurgt. - Deaktivér + Deaktiver Bekræft PIN Bekræft din Signal PIN Vær sikker på at du husker eller sikkert gemmer din PIN, da den ikke kan gendannes. Hvis du glemmer din PIN, kan du miste data når du genregistrerer din Signal konto diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 4c17001c9d0..870bd14293d 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -1094,7 +1094,7 @@ In dieser Unterhaltung gesendete und empfangene Nachrichten werden %s nach dem Lesen verschwinden. Jetzt aktualisieren - Diese Signal-Version wird heute ablaufen. Aktualisiere zur neuesten Version. + Diese Signal-Version wird heute ablaufen. Aktualisiere auf die neueste Version. Diese Signal-Version wird morgen ablaufen. Aktualisiere auf die neueste Version. Diese Signal-Version wird in %d Tagen ablaufen. Aktualisiere auf die neueste Version. @@ -1222,7 +1222,7 @@ Auf diesem Gerät fehlen die Google-Play-Dienste. Signal kann immer noch verwendet werden, allerdings beeinträchtigt diese Konfiguration eventuell die Zuverlässigkeit oder die Leistung.\n\nFalls du kein erfahrener Nutzer bist, kein Custom-ROM verwendest oder glaubst, dass diese Meldung irrtümlich angezeigt wird, kontaktiere bitte support@signal.org für Hilfe bei der Problembehandlung. Verstanden Fehler bei den Google-Play-Diensten - Google-Play-Dienste werden aktualisiert oder sind vorübergehend nicht verfügbar. Bitte erneut versuchen. + Google-Play-Dienste werden aktualisiert oder sind vorübergehend nicht verfügbar. Bitte versuche es erneut. Nutzungsbedingungen und Datenschutzerklärung Signal benötigt Zugriff auf deine Kontakte und Medien, damit du Nachrichten an Freunde senden und sichere Anrufe tätigen kannst. Signal benötigt Zugriff auf deine Kontakte, damit du Freunde kontaktieren und sichere Anrufe tätigen kannst. @@ -2127,7 +2127,7 @@ Schlüsselaustausch-Nachricht für eine ungültige Protokollversion empfangenPINs halten bei Signal gespeicherte Informationen verschlüsselt, sodass nur du auf sie zugreifen kannst. Wenn du Signal erneut installierst, werden so dein Profil und deine Einstellungen und Kontakte wiederhergestellt. Für das Öffnen der App wirst du deine PIN nicht benötigen. Wähle eine stärkere PIN - PINs stimmen nicht überein. Bitte erneut versuchen. + PINs stimmen nicht überein. Bitte versuche es erneut. Bestätige deine PIN. PIN konnte nicht erstellt werden Deine PIN wurde nicht gespeichert. Wir werden dich später daran erinnern, eine PIN zu erstellen. @@ -2150,7 +2150,7 @@ Schlüsselaustausch-Nachricht für eine ungültige Protokollversion empfangenÜberspringen Übermitteln PIN vergessen? - Falsche PIN. Bitte erneut versuchen. + Falsche PIN. Bitte versuche es erneut. Konto gesperrt Dein Konto wurde gesperrt, um deine Privatsphäre und Sicherheit zu schützen. Nach Ablauf von %1$d Tagen ohne Kontoaktivität kannst du diese Rufnummer ohne PIN erneut registrieren. Alle Inhalte werden dabei gelöscht. @@ -2161,7 +2161,7 @@ Schlüsselaustausch-Nachricht für eine ungültige Protokollversion empfangenGib die PIN ein, die du für dein Konto erstellt hast. Sie unterscheidet sich von deinem SMS-Verifikationscode. Alphanumerische PIN eingeben Numerische PIN eingeben - Falsche PIN. Bitte erneut versuchen. + Falsche PIN. Bitte versuche es erneut. PIN vergessen? Falsche PIN PIN vergessen? @@ -2283,7 +2283,7 @@ Schlüsselaustausch-Nachricht für eine ungültige Protokollversion empfangenPIN bestätigen Bestätige deine Signal-PIN Sorge dafür, dass du dir deine PIN einprägst oder sicher verwahrst, da sie nicht wiederhergestellt werden kann. Falls du deine PIN vergisst, könntest du bei erneutem Registrieren deines Signal-Kontos deine Daten verlieren. - Falsche PIN. Bitte erneut versuchen. + Falsche PIN. Bitte versuche es erneut. Registrierungssperre konnte nicht aktiviert werden. Registrierungssperre konnte nicht deaktiviert werden. Keine diff --git a/app/src/main/res/values-eu/strings.xml b/app/src/main/res/values-eu/strings.xml index 27ac1b2aa10..27ccd4bc620 100644 --- a/app/src/main/res/values-eu/strings.xml +++ b/app/src/main/res/values-eu/strings.xml @@ -66,6 +66,7 @@ Multimedia igotzen… Bideoa konprimatzen… + Mezuak dauden bilatzen… Blokeatutako erabiltzaileak Gehitu blokeatutako erabiltzailea diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index 481150d69d7..68502aa9ed3 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -65,6 +65,7 @@ Mengunggah media… Mengompresi video… + Memeriksa pesan baru… Pengguna diblokir Tambah pengguna diblokir @@ -279,6 +280,7 @@ Memeriksa Nanti saja Angka keamanan Anda dengan %s berubah + Nomor keamanan Anda dengan %s berubah, mungkin karena mereka memasang ulang Signal atau mengganti perangkat. Ketuk Verifikasi untuk mengonfirmasi nomor keamanan barunya. Ini bersifat opsional. Hapus percakapan terpilih? @@ -452,6 +454,7 @@ Untuk mengakses fitur-fitur baru seperti @mention dan admin, perbarui grup ini. Nanti saja + Perbarui grup %1$d anggota tidak dapat ditambahkan ulang ke dalam Grup Baru. Apa Anda ingin menambahkan mereka sekarang? @@ -590,6 +593,7 @@ Sunting nama dan gambar Grup Warisan Ini adalah Grup Warisan. Fitur-fitur seperti admin grup hana tersedia untuk Grup Baru. + Ini Grup Warisan. Untuk mengakses fitur-firue baru seperti @mention dan admin, Grup lama ini tidak bisa ditingkatkan menjadi grup yang baru karena terlalu besar. Ukuran maksimum grup adalah %1$d. perbarui grup ini. Ini adalah Grup MMS yang tidak aman. Untuk mengobrol secara privat, undang kontak Anda ke Signal. @@ -603,6 +607,7 @@ Nama profil Nama Pengguna Tentang + Tulis beberapa kata tentang Anda Nama anda Tambahkan ke kontak diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml index 0cc638025f3..143f3159b83 100644 --- a/app/src/main/res/values-nb/strings.xml +++ b/app/src/main/res/values-nb/strings.xml @@ -66,6 +66,7 @@ Laster opp media… Komprimerer video… + Ser etter meldinger… Blokkerte brukere Legg til blokkert bruker diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 27dc0501aab..c6d34d7e5bd 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -21,7 +21,7 @@ Je telefoonnummer wordt afgemeld voor Signal-berichten en -oproepen … Signal-berichten en -oproepen uitschakelen? Dit zal je telefoonnummer uitschrijven bij de servers, je kunt dan niet langer Signal-berichten en -oproepen ontvangen of verzenden. Je zult je telefoonnummer opnieuw moeten registreren als je die functies weer wilt gebruiken. - Fout bij verbinden met de server! + Fout bij verbinden met de server. Sms is ingeschakeld Tik hier als je je standaard-sms-applicatie wilt wijzigen Sms is uitgeschakeld @@ -58,7 +58,7 @@ Signal heeft toegang nodig tot de externe opslagruimte om afbeeldingen en video\'s weer te kunnen geven. Toestemming geven - Geen app gevonden om media te selecteren. + Er is geen app gevonden waarmee je media zou kunnen selecteren. Signal heeft toegang nodig tot de externe opslagruimte om afbeeldingen, video\'s of audio te kunnen verzenden, maar deze toestemming is pertinent geweigerd. Ga naar de instellingen, selecteer ‘Machtigingen’ en schakel ‘Opslagruimte’ in. Signal heeft toegang nodig tot de contacten om contactinformatie in Signal weer te geven, maar deze toestemming is pertinent geweigerd. Ga naar de instellingen, selecteer ‘Toestemmingen’ en schakel ‘Contacten’ in. Signal heeft toegang nodig tot de locatie om locaties te kunnen verzenden aan je gesprekspartners, maar deze toestemming is pertinent geweigerd. Ga naar de instellingen, selecteer ‘Toestemmingen’ en schakel ‘Locatie’ in. @@ -159,7 +159,7 @@ Mobiel Werk Anders - Het geselecteerde contact was ongeldig + De geselecteerde contactpersoon was ongeldig Niet verzonden, tik hier voor details Gedeeltelijk verzonden, tik hier voor details @@ -1364,7 +1364,7 @@ Tot slot moet Signal de telefoonstatus kunnen lezen om te voorkomen dat Signal-o Door jou als geverifieerd gemarkeerd Door jou als niet geverifieerd gemarkeerd Bericht kon niet worden verwerkt - Gespreksverzoeken + Gespreksverzoek Afbeelding GIF Audiobericht diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 6ed1d8c1405..d1f27272d7c 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -66,6 +66,7 @@ Enviando mídia… Comprimindo vídeo… + Procurando mensagens… Pessoas bloqueadas Adicionar uma pessoa bloqueada diff --git a/app/src/main/res/values-ur/strings.xml b/app/src/main/res/values-ur/strings.xml index 2c2901732e1..975bf8537ad 100644 --- a/app/src/main/res/values-ur/strings.xml +++ b/app/src/main/res/values-ur/strings.xml @@ -66,6 +66,7 @@ میڈیا اپ لوڈ ہو رہا ہے۔ ویڈیو مختصر ہو رہی ہے۔۔۔ + پیغامات کی جانچ ہو رہی ہے… مسدود صارفین مسدود صارف کو شامل کریں @@ -471,6 +472,7 @@ @ذکر, خصوصیات اور منتظمین جیسی نئی خصوصیات تک رسائی حاصل کرنے کے لیئے اس گروپ کو اپ گریڈ کریں۔ ابھی نہیں + گروپ کو اپ گریڈ کریں نئے گروپ میں %1$d ممبر کو دوبارہ شامل نہیں کیا جاسکا۔ کیا آپ انہیں ابھی شامل کرنا چاہتے ہیں؟ @@ -603,6 +605,7 @@ خاموش اطلاعات اپنی مرضی کے مطابق اطلاعات ذکر + چیٹ وال پیپر جب تک %1$s بند کریں چلائیں @@ -638,12 +641,16 @@ پروفائل کا نام صارف کا نام متعلق + اپنے بارے میں کچھ الفاظ لکھیں آپ کا نام + اپکا اسم رکنیت + اوتار سیٹ کرنے میں ناکام سسٹم رابطوں میں شامل کریں یہ شخص آپ کے رابطوں میں ہے پیغامات غائب ہو رہے ہیں چیٹ کا رنگ + چیٹ وال پیپر بلاک ان بلاک حفاظتی نمبر دیکھیں @@ -1100,6 +1107,7 @@ پاسفریز جمع کریں غلط پاسفریز! Signal ان لاک کریں + Signal Android - لاک اسکرین نقشہ ڈراپ پن @@ -1197,6 +1205,11 @@ %1$s سے آڈیو اور ویڈیو موصول نہیں ہوسکتی ہے اس کی وجہ یہ ہوسکتی ہے کہ انہوں نے آپ کے حفاظتی نمبر میں تبدیلی کی توثیق نہیں کی ہے ، ان کے آلے میں کوئی مسئلہ ہے یا انہوں نے آپ کو مسدود کردیا ہے۔ + پراکسی سرور + پراکسی ایڈریس + کیا آپ یہ پراکسی ایڈریس استعمال کرنا چاہتے ہیں؟ + پروکسی استعمال کرو + پراکسی سے کامیابی کے ساتھ منسلک ہوا۔ اپنے ملک کا انتخاب کریں آپ لازمی ملک کا کوڈ واضع کریں @@ -1307,6 +1320,7 @@ اس یو آر ایل کو کاپی کریں اور اسے اپنی ایشو رپورٹ یا سپورٹ ای میل میں شامل کریں:. n \ n%1$s اشتراک کریں + فلٹر: Device کی معلومات: Android ورژن: Signal ورژن: @@ -1686,13 +1700,24 @@ کسٹم MMS گروپ کے نام اور تصاویر صرف آپ کو نظر آئیں گی۔ متعلق + اپنے بارے میں کچھ الفاظ لکھیں… + %1$d/%2$d + آزادانہ طور پر بولیں + خفیہ کردہ + مہربانی سے پیش آؤ + کافی کا دیوانہ + چیٹ کرنے کے لئے دستیاب + ایک وقفے پر + کسی نئی چیز پر کام کرنا گروپ کے نام اور تصویر میں ترمیم کریں گروپ کا نام آپ کا نام + پہلا نام آخری نام (اختیاری) محفوظ کریں + نیٹ ورک کے مسائل کی وجہ سے بچانے میں ناکام۔ بعد میں دوبارہ کوشش کریں۔ میڈیا اشتراک کریں @@ -1865,6 +1890,7 @@ اندھیرا ظہور ہونا موضوع + چیٹ وال پیپر PIN کو غیر فعال کریں PIN کو فعال کریں اگر آپ PIN کو غیر فعال کردیتے ہیں تو ، آپ جب تک دستی طور پر بیک اپ اور بحالی نہیں کرتے ہیں تب تک آپ تمام اعداد و شمار کو کھو دیں گے۔ جب PIN غیر فعال ہو تو آپ رجسٹریشن لاک آن نہیں کرسکتے ہیں۔ @@ -1883,6 +1909,7 @@ اگر پڑھنے کی رسیدیں غیر فعال کردی گئی ہیں تو ، آپ دوسروں کی پڑھی ہوئی رسیدیں نہیں دیکھ پائیں گے۔ ٹائپنگ انڈیکیٹرز اگر ٹائپنگ اندیکیٹرز غیر فعال ہیں، آپ دوسروں سے ٹائپنگ انڈیکیٹرز دیکھنے کے قابل نہیں ہیں۔ + ذاتی سیکھنے کو غیر فعال کرنے کے لئے کی بورڈ سے درخواست کریں۔ یہ ترتیب ضمانت نہیں ہے ، اور آپ کا کی بورڈ اسے نظرانداز کرسکتا ہے۔ مسدود صارفین جب موبائل ڈیٹا استعمال کریں جب وائی فائی استعمال کریں @@ -1943,10 +1970,22 @@ غیر رابطوں اور ان لوگوں کی طرف سے آنے والے پیغامات کے لئے مہر بند مرسل کو اہل بنائیں جن کے ساتھ آپ نے اپنا پروفائل اشتراک نہیں کیا ہے۔ مزید پڑھیں ایک صارف کا نام مرتب کریں + پراکسی + پروکسی استعمال کرو بند کریں چلائیں + پراکسی ایڈریس + صرف ایک پراکسی استعمال کریں اگر آپ سیلولر یا Wi-Fi پر Signal سے رابطہ قائم کرنے کے قابل نہیں ہیں۔ اشتراک کریں محفوظ کریں + پراکسی سے منسلک ہو رہا ہے… + پراکسی سے منسلک + رابطہ ناکام + پراکسی سے رابطہ قائم نہیں ہوسکا۔ پراکسی ایڈریس چیک کریں اور دوبارہ کوشش کریں۔ + آپ پراکسی سے جڑے ہوئے ہیں۔ آپ کسی بھی وقت ترتیبات سے پراکسی بند کرسکتے ہیں۔ + کامیابی + رابطہ ناکام ہوگیا + پراکسی ایڈریس درج کریں آپشن کو کسٹمائز کریں @@ -2129,6 +2168,8 @@ غلط پن آپ کا پن بھول گیا؟ بہت ساری کوششیں باقی نہیں ہیں! + Signal اندراج - Android کے لئے پن کے ساتھ مدد کی ضرورت ہے (v1 PIN) + Signal اندراج - Android کے لئے پن کے ساتھ مدد کی ضرورت ہے (v2 PIN) آپ کی رازداری اور سیکیورٹی کے لیئے آپ کے PIN کی بازیافت کا کوئی راستہ نہیں ہے۔ اگر آپ اپنا PIN یاد نہیں کرسکتے ہیں تو ، غیر فعال ہونے کے%1$d دن کے بعد آپ SMS کے ذریعے دوبارہ تصدیق کر سکتے ہیں۔ اس معاملے میں ، آپ کا اکاؤنٹ صاف ہوجائے گا اور تمام مواد حذف ہوجائے گا۔ آپ کی رازداری اور سیکیورٹی کے لیئے ، آپ کے PIN کی بازیافت کا کوئی راستہ نہیں ہے۔ اگر آپ اپنا PIN یاد نہیں کرسکتے ہیں تو ، آپ غیر فعال%1$d دنوں کے بعد ایس ایم ایس کے ذریعے دوبارہ تصدیق کر سکتے ہیں۔ اس معاملے میں ، آپ کا اکاؤنٹ صاف ہوجائے گا اور تمام مواد حذف ہوجائے گا۔ @@ -2364,16 +2405,44 @@ اشتراک کریں بھیجیں + %1$s, + متعدد چیٹس پر اشتراک صرف Signal پیغامات کیلئے معاون ہے + کچھ صارفین کو بھیجنے میں ناکام + آپ صرف %1$d چیٹس تک اشتراک کرسکتے ہیں پیغام آگے بھیجیں + چیٹ وال پیپر + وال پیپر سیٹ کریں + سیاہ تھیم وال پیپر کو مدھم کرتا ہے + وال پیپر صاف کریں + اس چیٹ کے لئے وال پیپر صاف کریں؟ + وال پیپر صاف کریں؟ اس سے وہ کسٹم وال پیپر صاف نہیں ہوں گے جو آپ نے اپنی چیٹس کے لیئے رکھے ہیں۔ + تمام وال پیپر کو دوبارہ ترتیب دیں + آپ نے اپنی چیٹس کیلئے مرتب کردہ کسٹم وال پیپرز سمیت تمام وال پیپرز کو دوبارہ ترتیب دیں۔ + رابطے کا نام دوبارہ بحال کریں + صاف + وال پیپر پیش نظارہ + فوٹو میں سے انتخاب کریں + پریسیٹس + پیش نظارہ + وال پیپر سیٹ کریں + مزید وال پیپرز کا پیش نظارہ کرنے کے لئے سوائپ کریں + تمام چیٹس کیلئے وال پیپر مرتب کریں + %1$s کے لئے وال پیپر سیٹ کریں اپنے گیلری کو دیکھنے کیلئے اسٹوریج کی اجازت درکار ہے۔ + وال پیپر کی تصویر منتخب کریں + زوم کرنے کے لئے pinch ، ایڈجسٹ کرنے کے لئے گھسیٹیں۔ + تمام چیٹس کیلئے وال پیپر مرتب کریں۔ + %s کے لئے وال پیپر سیٹ کریں۔ + وال پیپر کی ترتیب میں خامی۔ + تصویر کو دھندلا کرو diff --git a/app/witness-verifications.gradle b/app/witness-verifications.gradle index 053e90bd55b..6544d83e2d1 100644 --- a/app/witness-verifications.gradle +++ b/app/witness-verifications.gradle @@ -426,11 +426,11 @@ dependencyVerification { ['org.threeten:threetenbp:1.3.6', 'f4c23ffaaed717c3b99c003e0ee02d6d66377fd47d866fec7d971bd8644fc1a7'], - ['org.whispersystems:signal-client-android:0.2.3', - '21e7bd8cc80559ee064e2acf7b9d091155c6b511e8b186fa1310267a5ab50e5c'], + ['org.whispersystems:signal-client-android:0.1.5', + 'a95f4d8125a22552da99b5db15589454789eee322e84d9ba613c258150366a64'], - ['org.whispersystems:signal-client-java:0.2.3', - '6d3648e0cb9e22a921198f853a4886bdbaed26a4c52accf559618d75c2189b89'], + ['org.whispersystems:signal-client-java:0.1.5', + 'f5beec3fe3ef75346c2cd103278c7b0c0e117f8a97405bf9edd3bf3ff1881b70'], ['pl.tajchert:waitingdots:0.1.0', '2835d49e0787dbcb606c5a60021ced66578503b1e9fddcd7a5ef0cd5f095ba2c'], diff --git a/libsignal/service/build.gradle b/libsignal/service/build.gradle index a9ede8d1c54..5a4d9afbf02 100644 --- a/libsignal/service/build.gradle +++ b/libsignal/service/build.gradle @@ -21,7 +21,7 @@ dependencies { api 'com.googlecode.libphonenumber:libphonenumber:8.12.17' api 'com.fasterxml.jackson.core:jackson-databind:2.9.9.2' - api 'org.whispersystems:signal-client-java:0.2.3' + api 'org.whispersystems:signal-client-java:0.1.5' api 'com.squareup.okhttp3:okhttp:3.12.10' implementation 'org.threeten:threetenbp:1.3.6' diff --git a/libsignal/service/witness-verifications.gradle b/libsignal/service/witness-verifications.gradle index 3a486939ca4..dde8f02b941 100644 --- a/libsignal/service/witness-verifications.gradle +++ b/libsignal/service/witness-verifications.gradle @@ -30,7 +30,7 @@ dependencyVerification { ['org.threeten:threetenbp:1.3.6', 'f4c23ffaaed717c3b99c003e0ee02d6d66377fd47d866fec7d971bd8644fc1a7'], - ['org.whispersystems:signal-client-java:0.2.3', - '6d3648e0cb9e22a921198f853a4886bdbaed26a4c52accf559618d75c2189b89'], + ['org.whispersystems:signal-client-java:0.1.5', + 'f5beec3fe3ef75346c2cd103278c7b0c0e117f8a97405bf9edd3bf3ff1881b70'], ] }