briar issueshttps://code.briarproject.org/groups/briar/-/issues2021-08-31T13:11:23Zhttps://code.briarproject.org/briar/briar/-/issues/1821Bluetooth setup screen2021-08-31T13:11:23ZakwizgranBluetooth setup screenReflected transport properties should enable most devices to learn their own Bluetooth addresses, but there's still a bootstrapping problem when a group of two or more contacts are all running Android 8.1+ and none of them added each oth...Reflected transport properties should enable most devices to learn their own Bluetooth addresses, but there's still a bootstrapping problem when a group of two or more contacts are all running Android 8.1+ and none of them added each other via Bluetooth.
We could solve this by adding a "Bluetooth setup" workflow. If the user activates the Bluetooth plugin and we don't know the device's address, we tell the user that Bluetooth needs to be set up and that they need a contact nearby to help with this. When both users are ready, we perform discovery, show a list of devices, and ask the users to pick each other's devices. If the devices succeed in making a connection they'll learn each other's addresses and exchange them via reflected transport properties.Adapt to changes in the Android platformTorsten GroteTorsten Grote2021-04-30https://code.briarproject.org/briar/briar/-/issues/1819Crash if screen is rotated during setup and "Create Account" is tapped twice2021-07-06T10:03:53ZakwizgranCrash if screen is rotated during setup and "Create Account" is tapped twiceI got the following crash on the Nokia 3.1 (Android 10) while trying to reproduce another bug. During setup, I rotated the screen to landscape and back to portrait after tapping "Create Account", which caused the progress wheel to disapp...I got the following crash on the Nokia 3.1 (Android 10) while trying to reproduce another bug. During setup, I rotated the screen to landscape and back to portrait after tapping "Create Account", which caused the progress wheel to disappear and the "Create Account" button to reappear. I tapped the button again and Briar crashed:
```
2020-10-29 10:58:16.219 10998-10998/org.briarproject.briar.android.debug I/BaseActivity: Destroying StartupActivity
2020-10-29 10:58:16.224 10998-10998/org.briarproject.briar.android.debug I/BaseActivity: Stopping SplashScreenActivity
2020-10-29 10:58:16.229 10998-10998/org.briarproject.briar.android.debug I/BaseActivity: Destroying SplashScreenActivity
2020-10-29 10:58:28.199 10998-11087/org.briarproject.briar.android.debug I/SetupControllerImpl: Creating account
2020-10-29 10:58:28.380 10998-11087/org.briarproject.briar.android.debug I/IdentityManagerImpl: Creating identity took 178 ms
2020-10-29 10:58:28.381 10998-11087/org.briarproject.briar.android.debug I/IdentityManagerImpl: Identity registered
2020-10-29 10:58:29.328 10998-10998/org.briarproject.briar.android.debug I/BaseActivity: Pausing SetupActivity
2020-10-29 10:58:29.343 10998-10998/org.briarproject.briar.android.debug I/BaseActivity: Stopping SetupActivity
2020-10-29 10:58:29.412 10998-10998/org.briarproject.briar.android.debug I/BaseActivity: Destroying SetupActivity
2020-10-29 10:58:29.614 10998-11087/org.briarproject.briar.android.debug I/ScryptKdf: KDF cost parameter 8192
2020-10-29 10:58:30.015 10998-10998/org.briarproject.briar.android.debug I/BaseActivity: Creating SetupActivity
2020-10-29 10:58:30.087 10998-11087/org.briarproject.briar.android.debug I/ScryptKdf: Deriving key from password took 472 ms
2020-10-29 10:58:30.213 10998-11087/org.briarproject.briar.android.debug I/AndroidKeyStrengthener: Loaded key from keystore
2020-10-29 10:58:30.338 10998-11087/org.briarproject.briar.android.debug I/AccountManagerImpl: Storing database key in file
2020-10-29 10:58:30.341 10998-11087/org.briarproject.briar.android.debug I/AccountManagerImpl: Created database key directory
2020-10-29 10:58:30.344 10998-11087/org.briarproject.briar.android.debug I/AccountManagerImpl: Stored database key in backup file
2020-10-29 10:58:30.345 10998-11087/org.briarproject.briar.android.debug I/AccountManagerImpl: Renamed backup file to primary
2020-10-29 10:58:30.347 10998-11087/org.briarproject.briar.android.debug I/AccountManagerImpl: Stored second copy of database key in backup file
2020-10-29 10:58:30.354 10998-10998/org.briarproject.briar.android.debug I/BaseActivity: Starting SetupActivity
2020-10-29 10:58:30.366 10998-10998/org.briarproject.briar.android.debug I/BaseActivity: Resuming SetupActivity
2020-10-29 10:58:33.257 10998-10998/org.briarproject.briar.android.debug I/BaseActivity: Pausing SetupActivity
2020-10-29 10:58:33.261 10998-10998/org.briarproject.briar.android.debug I/BaseActivity: Stopping SetupActivity
2020-10-29 10:58:33.288 10998-10998/org.briarproject.briar.android.debug I/BaseActivity: Destroying SetupActivity
2020-10-29 10:58:33.623 10998-10998/org.briarproject.briar.android.debug I/BaseActivity: Creating SetupActivity
2020-10-29 10:58:33.968 10998-10998/org.briarproject.briar.android.debug I/BaseActivity: Starting SetupActivity
2020-10-29 10:58:33.980 10998-10998/org.briarproject.briar.android.debug I/BaseActivity: Resuming SetupActivity
2020-10-29 10:58:36.130 10998-11087/org.briarproject.briar.android.debug I/SetupControllerImpl: Creating account
2020-10-29 10:58:36.132 10998-11087/org.briarproject.briar.android.debug E/AndroidRuntime: FATAL EXCEPTION: pool-3-thread-1
Process: org.briarproject.briar.android.debug, PID: 10998
java.lang.AssertionError: Already have a database key
at org.briarproject.bramble.account.AccountManagerImpl.createAccount(AccountManagerImpl.java:169)
at org.briarproject.briar.android.account.SetupControllerImpl.lambda$createAccount$0$SetupControllerImpl(SetupControllerImpl.java:111)
at org.briarproject.briar.android.account.-$$Lambda$SetupControllerImpl$bM_lMydguKzowB8BXIvR9b0joQw.run(Unknown Source:8)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:919)
```Adapt to changes in the Android platformIvanaIvana2021-04-30https://code.briarproject.org/briar/briar/-/issues/1793Feedback screen has wrong title in screen reader2021-07-06T10:03:53ZakwizgranFeedback screen has wrong title in screen readerWhen opening the feedback screen, the TalkBack screen reader reads the title as "Briar crash reporter". I'm guessing this is the default title for the activity and it's changed to "Feedback" after the point where the screen reader reads ...When opening the feedback screen, the TalkBack screen reader reads the title as "Briar crash reporter". I'm guessing this is the default title for the activity and it's changed to "Feedback" after the point where the screen reader reads the title.Adapt to changes in the Android platformTorsten GroteTorsten Grote2021-04-30https://code.briarproject.org/briar/briar/-/issues/1753API 30: Access to installed packages is restricted2021-01-12T11:22:23ZakwizgranAPI 30: Access to installed packages is restrictedWhen we target API 30 we'll need to make changes to retain the ability to check whether power management apps are installed:
https://medium.com/androiddevelopers/package-visibility-in-android-11-cc857f221cd9
* [x] `AndroidTorPlugin`: `...When we target API 30 we'll need to make changes to retain the ability to check whether power management apps are installed:
https://medium.com/androiddevelopers/package-visibility-in-android-11-cc857f221cd9
* [x] `AndroidTorPlugin`: `pm.getPackageInfo(app.getPackageName(), 0)`
* [x] `AndroidWakeLockManagerImpl`: `packageName.startsWith()`
* [x] `PanicPreferencesFragment`: `pm.getApplicationInfo(panicTriggerApp)`
* [x] `PanicPreferencesFragment`: `intent.resolveActivity(pm)`
* [x] `PanicPreferencesFragment`: `PanicResponder.resolveTriggerApps(pm)`
* [x] `ScreenFilterMonitorImpl`: `pm.getInstalledPackages(GET_PERMISSIONS)`
* [x] `ScreenFilterMonitorImpl`: `pm.getPackageInfo(PLAY_SERVICES_PACKAGE, GET_SIGNATURES)`
* [x] `SettingsFragment`: `intent.resolveActivity(pm)`
* [x] `HuaweiView`: `pm.queryIntentActivities(i, PackageManager.MATCH_DEFAULT_ONLY)`
* [x] `KeyAgreementActivity`: `Intent(ACTION_REQUEST_DISCOVERABLE).resolveActivity(pm)`
* [x] `LinkDialogFragment`: `pm.queryIntentActivities()`Adapt to changes in the Android platformTorsten GroteTorsten Grote2021-04-30https://code.briarproject.org/briar/briar/-/issues/1743Research whether our wake lock tags are still effective2021-09-01T10:10:21ZakwizgranResearch whether our wake lock tags are still effectiveLeave Briar running on devices with recent versions of Huawei PowerGenie and Evenwell PowerMonitor to see whether our wake lock tags still protect us from being killed.Leave Briar running on devices with recent versions of Huawei PowerGenie and Evenwell PowerMonitor to see whether our wake lock tags still protect us from being killed.Adapt to changes in the Android platformakwizgranakwizgran2021-04-30https://code.briarproject.org/briar/briar/-/issues/1720ACRA 4.11 crashes during init with targetSdkVersion set to R (30)2021-01-06T12:31:44ZakwizgranACRA 4.11 crashes during init with targetSdkVersion set to R (30)Looks like we'll need to migrate to ACRA 5 before targetting API 30. The crash doesn't happen on the API 30 emulator with targetSdkVersion set to 29, so this isn't urgent.
```
2020-03-31 11:02:33.685 25167-25167/org.briarproject.briar.a...Looks like we'll need to migrate to ACRA 5 before targetting API 30. The crash doesn't happen on the API 30 emulator with targetSdkVersion set to 29, so this isn't urgent.
```
2020-03-31 11:02:33.685 25167-25167/org.briarproject.briar.android.debug E/AndroidRuntime: FATAL EXCEPTION: main
Process: org.briarproject.briar.android.debug, PID: 25167
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/android/internal/util/Predicate;
at org.acra.util.IOUtils.streamToString(IOUtils.java:84)
at org.acra.ACRA.getCurrentProcessName(ACRA.java:303)
at org.acra.ACRA.isACRASenderServiceProcess(ACRA.java:294)
at org.acra.ACRA.init(ACRA.java:210)
at org.acra.ACRA.init(ACRA.java:173)
at org.acra.ACRA.init(ACRA.java:157)
at org.acra.ACRA.init(ACRA.java:140)
at org.briarproject.briar.android.BriarApplicationImpl.attachBaseContext(BriarApplicationImpl.java:100)
at android.app.Application.attach(Application.java:351)
at android.app.Instrumentation.newApplication(Instrumentation.java:1159)
at android.app.LoadedApk.makeApplication(LoadedApk.java:1203)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6521)
at android.app.ActivityThread.access$1300(ActivityThread.java:229)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1885)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:216)
at android.app.ActivityThread.main(ActivityThread.java:7464)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:549)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:955)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.android.internal.util.Predicate" on path: DexPathList[[zip file "/data/app/~~g6kWDR95CtejUwuMSRctEg==/org.briarproject.briar.android.debug-C8FXbrMV6GsjIoTVns77-A==/base.apk"],nativeLibraryDirectories=[/data/app/~~g6kWDR95CtejUwuMSRctEg==/org.briarproject.briar.android.debug-C8FXbrMV6GsjIoTVns77-A==/lib/x86, /system/lib, /system_ext/lib, /product/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:202)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at org.acra.util.IOUtils.streamToString(IOUtils.java:84)
at org.acra.ACRA.getCurrentProcessName(ACRA.java:303)
at org.acra.ACRA.isACRASenderServiceProcess(ACRA.java:294)
at org.acra.ACRA.init(ACRA.java:210)
at org.acra.ACRA.init(ACRA.java:173)
at org.acra.ACRA.init(ACRA.java:157)
at org.acra.ACRA.init(ACRA.java:140)
at org.briarproject.briar.android.BriarApplicationImpl.attachBaseContext(BriarApplicationImpl.java:100)
at android.app.Application.attach(Application.java:351)
at android.app.Instrumentation.newApplication(Instrumentation.java:1159)
at android.app.LoadedApk.makeApplication(LoadedApk.java:1203)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6521)
at android.app.ActivityThread.access$1300(ActivityThread.java:229)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1885)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:216)
at android.app.ActivityThread.main(ActivityThread.java:7464)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:549)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:955)
```Adapt to changes in the Android platformTorsten GroteTorsten Grote2021-04-30https://code.briarproject.org/briar/briar/-/issues/1114Show when user feedback has been received2021-07-06T10:03:53ZakwizgranShow when user feedback has been receivedA user asked to be shown when their feedback was received.A user asked to be shown when their feedback was received.Adapt to changes in the Android platformTorsten GroteTorsten Grote2021-04-30https://code.briarproject.org/briar/briar/-/issues/57Detect DB durability failures2021-04-12T13:18:14ZakwizgranDetect DB durability failuresIf the app or device crashes, the database may fail to store data durably:
http://www.h2database.com/html/advanced.html#durability_problems
This may cause a wide range of problems, including data sync bugs where a peer believes we've s...If the app or device crashes, the database may fail to store data durably:
http://www.h2database.com/html/advanced.html#durability_problems
This may cause a wide range of problems, including data sync bugs where a peer believes we've stored some data because we acked it, but we failed to store the data durably. The peer won't ever resend the acked data.
To detect durability problems, store a flag in the DB indicating whether the DB is dirty. At startup, if the DB is dirty then a crash has occurred. Otherwise mark the DB dirty before handling the first transaction. At shutdown, mark the DB clean after handling the last transaction.
If a crash is detected then we can attempt to recover from any problems it may have caused, for example by asking peers to forget about any acks we've sent.
This approach relies on the assumption that if transaction A is committed before transaction B is started, it's not possible for the database to durably store transaction B but not transaction A. Is that a safe assumption?Adapt to changes in the Android platformSebastianSebastian2021-04-30https://code.briarproject.org/briar/briar/-/issues/2012Special bubbles not updating correctly when messages self-destruct2021-07-06T09:56:29ZSebastianSpecial bubbles not updating correctly when messages self-destructSelf-destructing messagesIvanaIvana2021-01-31https://code.briarproject.org/briar/briar/-/issues/1986Introducing same two contacts not possible after self-destructing non-answere...2021-05-05T16:14:52ZSebastianIntroducing same two contacts not possible after self-destructing non-answered response to one-sided declined introductionUnder certain circumstances, an introduction can fail and leave the introducer in a state where they are not able to retry the introduction.
Situation to reproduce this: A introduces B and C with self-destructing messages enabled among ...Under certain circumstances, an introduction can fail and leave the introducer in a state where they are not able to retry the introduction.
Situation to reproduce this: A introduces B and C with self-destructing messages enabled among A-B and A-C. At the time of the introduction being sent, C is offline to simulate a delay.
* introduction arrives at B
* 30 seconds pass
* C comes online
* introduction arrives at C
* another 30 seconds pass
* B didn't do anything, the introduction self-destructs, and auto-declines it
* A forwards the decline to C
* another 30 seconds pass
* C didn't do anything, the introduction self-destructs, but doesn't auto decline it because B already declined and the
introduction can no longer succeed
* C didn't send a response and hence A cannot try again to introduce B and C, although it should. Also C has no way to respond to the introduction any longer to fix that
Test instructions:
* Variant 1
* Let A introduce B and C, with self-destructing messages enabled among A and C but not necessarily enabled among A and B.
* let B **decline** the introduction
* observe that C receives the response from B
* let the timer of the introduction expire at C
* observe that A received a decline from both B and C
* try to let A introduce B and C again. Make sure it is possible to actually send a new introduction that arrives at B and C
* Variant 2
* Let A introduce B and C, with self-destructing messages enabled among A and C but not necessarily enabled among A and B.
* let B **accept** the introduction
* in this case, C does not receive any response from B
* let the timer of the introduction expire at C
* observe that A received an accept from B and a decline from C
* try to let A introduce B and C again. Make sure it is possible to actually send a new introduction that arrives at B and CSelf-destructing messagesIvanaIvana2021-01-31https://code.briarproject.org/briar/briar/-/issues/1975Crash: after introductions are declined by both parties (disappearing message...2021-05-05T16:17:23ZIvanaCrash: after introductions are declined by both parties (disappearing messages setting is ON on all devices)Scenario was like this;
Three devices, Samsung Mini API19, Nokia 1.3 API 30 and Pixel 2 API29. Samsung has connections with both, but they are not connected to each other. Disappearing messages are on for both Samsung's contacts, as we...Scenario was like this;
Three devices, Samsung Mini API19, Nokia 1.3 API 30 and Pixel 2 API29. Samsung has connections with both, but they are not connected to each other. Disappearing messages are on for both Samsung's contacts, as well as on Nokia and Pixel for the conversations with Samsung.
Samsung mini selects Pixel and goes to select the Make Introductions. Then it selects the Nokia's contact and sends a message to both of them. They both decline the intro message.
Samsung goes back to Pixel's conversation, and tries to perform the intro again, in the same way.
After selecting Make introductions, the crash happens. No logfile as the phone that crashed was not connected to Android Studio at the time of crash. But here are the screenshots of Stacktrace on the phone itself.
Reproduced - crash happens after both parties decline invitation with Disappearing msgs = ON. One more detail in the scenario is that the sender's atomatically generated messages related to this intro disappear before either of the recipients sees their messages re: intro that sender sent them. After disappearance of the sender's auto-generated msgs, both contacts then look at their messages and decline the intro.
![device-2021-03-23-115918](/uploads/fcf869c8275fe99c4ef3db7e9131a9d7/device-2021-03-23-115918.png)![device-2021-03-23-115939](/uploads/c42a2522c05d09c95a5a20358687a5cc/device-2021-03-23-115939.png)[Logfile_Crash_230321.txt](/uploads/d47015c1f5b198907b63ca667557fa6f/Logfile_Crash_230321.txt)Self-destructing messagesIvanaIvana2021-01-31https://code.briarproject.org/briar/briar/-/issues/1958Bomb icon disappears from the text input field in landscape orientation when ...2021-03-08T12:29:21ZIvanaBomb icon disappears from the text input field in landscape orientation when the keyboard comes upSteps to reproduce the issue:
Go to menu in the upper right corner and change Disappearing messages setting to ON
Start typing a message to a contact, and verify that there is a little bomb icon in the text input field as you are typing...Steps to reproduce the issue:
Go to menu in the upper right corner and change Disappearing messages setting to ON
Start typing a message to a contact, and verify that there is a little bomb icon in the text input field as you are typing... then change the orientation of device. Continue typing.
Expected result:
The bomb icon shows in the text input field the same way as it does in the portrait orientation
Actual results:
The bomb icon does not show int he text input field when the keyboard is up.
Turning the device back into portrait orientation - bomb icon in the text input field is visible again.![device-2021-03-03-123142](/uploads/211a76c6a292e5e923b93787a5fb9ad3/device-2021-03-03-123142.mp4)Self-destructing messages2021-01-31https://code.briarproject.org/briar/briar/-/issues/1957All conversation messages are marked as read via messaging manager2021-05-05T16:08:47ZakwizgranAll conversation messages are marked as read via messaging managerThe setReadFlag() method is declared in the ConversationClient interface, but only MessagingManagerImpl's implementation of the method is used (except for one integration test).
If clients don't need their own implementations, the metho...The setReadFlag() method is declared in the ConversationClient interface, but only MessagingManagerImpl's implementation of the method is used (except for one integration test).
If clients don't need their own implementations, the method could be moved to the MessagingManager or ConversationManager interface, and the unused implementation in ConversationClientImpl could be removed.
On the other hand, if clients *do* need their own implementations then the implementation in ConversationClientImpl should be updated and we should make sure that ConversationViewModel and (eventually) MessagingControllerImpl call the right client for each message.
Test instructions:
* repeat tests from !1389Self-destructing messagesIvanaIvana2021-01-31https://code.briarproject.org/briar/briar/-/issues/1955Don't advertise support for self-destructing messages unless feature flag is ...2021-03-08T17:58:12ZakwizgranDon't advertise support for self-destructing messages unless feature flag is enabledTo avoid receiving self-destructing messages when the UI for the feature is disabled by a feature flag, we shouldn't tell our contacts we support the new version of the messaging client unless the feature flag is enabled.To avoid receiving self-destructing messages when the UI for the feature is disabled by a feature flag, we shouldn't tell our contacts we support the new version of the messaging client unless the feature flag is enabled.Self-destructing messagesTorsten GroteTorsten Grote2021-01-31https://code.briarproject.org/briar/briar/-/issues/1953Dialog about "Disappearing messages changed" for image only messages2021-03-08T12:27:51ZSebastianDialog about "Disappearing messages changed" for image only messages![issue](/uploads/8e8d903d76bddc993f68dfc1af183ae6/issue.png)
The "Disappearing messages changed" appears although it shouldn't.
Steps to reproduce:
1. open a fresh, empty conversation
2. enable disappearing messages
3. (optional: send...![issue](/uploads/8e8d903d76bddc993f68dfc1af183ae6/issue.png)
The "Disappearing messages changed" appears although it shouldn't.
Steps to reproduce:
1. open a fresh, empty conversation
2. enable disappearing messages
3. (optional: send a text message and notice that the dialog does not appear)
4. send an image message (without text) and see the dialog appear
It doesn't work just once, it works repeatedly and also after sending more text-only or image-with-text messagesSelf-destructing messagesTorsten GroteTorsten Grote2021-01-31https://code.briarproject.org/briar/briar/-/issues/1952Crash - when changing or canceling profile pictures2021-07-06T10:06:10ZIvanaCrash - when changing or canceling profile picturesSteps to reproduce:
HTC One M9 API 24 -
Log into the briar
1. Go to settings > tap on 'tap here to change your profile picture'
2. Select a picture available in your phone
3. When the popup appears, select 'cancel'.
Go back to step 1...Steps to reproduce:
HTC One M9 API 24 -
Log into the briar
1. Go to settings > tap on 'tap here to change your profile picture'
2. Select a picture available in your phone
3. When the popup appears, select 'cancel'.
Go back to step 1 and 2
This has been reproduced 3 times... here are the logfiles from Android studio.
[change_of_profile_pictures_3.txt](/uploads/2be2b0296e1e4a386f41e6ce31fbae13/change_of_profile_pictures_3.txt)[crash_when_changing_profile_picture_2.txt](/uploads/fb32103ee1133301809083e9331bd5f5/crash_when_changing_profile_picture_2.txt)[Crash_when_changing_profile_pictures.txt](/uploads/bdbcba54c0d8ff0a966a3effe4dd2d2e/Crash_when_changing_profile_pictures.txt)
version under test: beta 1.2.16 8a534b45Profile picturesIvanaIvana2021-01-31https://code.briarproject.org/briar/briar/-/issues/1930Show actual auto-delete timer duration in UI2021-03-01T17:05:35ZTorsten GroteShow actual auto-delete timer duration in UISince we only support a fixed timer for disappearing messages, the UI currently shows a static text (one week) for the duration.
However, to make changing the timer possible in the future without client version upgraded, we should alrea...Since we only support a fixed timer for disappearing messages, the UI currently shows a static text (one week) for the duration.
However, to make changing the timer possible in the future without client version upgraded, we should already show the actual timer that is being used, so that old clients can show the actual duration used by future clients.Self-destructing messagesakwizgranakwizgran2021-01-31https://code.briarproject.org/briar/briar/-/issues/1913Bomb icon on images not white on API 162021-03-08T12:27:36ZSebastianBomb icon on images not white on API 16The bomb icon is grey on grey background which makes it difficult to see.
Its possible that !1346 will help find a simple solution for this.
![Screen01](/uploads/2739eda519037ebf5d109d087fc44746/Screen01.png)The bomb icon is grey on grey background which makes it difficult to see.
Its possible that !1346 will help find a simple solution for this.
![Screen01](/uploads/2739eda519037ebf5d109d087fc44746/Screen01.png)Self-destructing messagesSebastianSebastian2021-01-31https://code.briarproject.org/briar/briar/-/issues/1893Provide explanation when self-destruct timer gets changed2021-03-11T12:26:30ZTorsten GroteProvide explanation when self-destruct timer gets changedWhen self-destruct timer gets changed initially and later, we should provide a way to get more information about this feature for users that don't understand it, yet.
This could be as simple as making the timer changed message bubble ta...When self-destruct timer gets changed initially and later, we should provide a way to get more information about this feature for users that don't understand it, yet.
This could be as simple as making the timer changed message bubble tapable "Tap here to change" and bring the user to the settings screen for self-destructing messages that has further explanation #1837Self-destructing messagesIvanaIvana2021-01-31https://code.briarproject.org/briar/briar/-/issues/1864Show warning dialog when the expected timer differs from the current timer2021-03-11T12:26:19ZTorsten GroteShow warning dialog when the expected timer differs from the current timerWe mirror the timer duration from our contact's messages. It is possible that we are writing a message and short before we hit send, the timer changes or gets turned off. To prevent this scenario, we should show a warning dialog that pop...We mirror the timer duration from our contact's messages. It is possible that we are writing a message and short before we hit send, the timer changes or gets turned off. To prevent this scenario, we should show a warning dialog that pops up if the timer when sending is different from the timer when we started typing the message.
Subtask of #804.Self-destructing messagesIvanaIvana2021-01-31