* Theme selector
- ability to select from three default choices: system theme, light, dark
- ability to choose color accent (primary color)
* Removed unused code and made small changes to colors and buttons
* Ability to disable notifications per chat
* All Buttons in AlertDialog replaced with TextButtons
* update icon
* update strings
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
* Re-apply new chat instance on chatId changes
* Fixed incorrectly calculated counters on floating buttons
* Show chat at the bottom of a view instead of at the top
- on orientation change scroll position in chat wasn't preserved
- the app had been making multiple same queries to a database when tried to preload more messages
* Different level of APK compression
- can reduce from 200mb to 50mb with level 5 of compression. Supports Intellij IDEA and command line gradle invocation
- by default, this feature is disabled. To enable create a file local.properties in `apps/android` and paste this line: `compression_level=5`
- level can be from 0 (no compression) to 9 (slowest and the must effective)
- automatically enables `extractNativeLibs` AndroidManifest's flag since it's required in this case. Feel free to find an alternative that works with compression of .so libs and without enabling this flag
- Windows is not suppored, of course. Only Unix-like OSes
* script corrections
* Missing JAVA_HOME in some environments
* Rename release apk made by IDEA to simplex.apk
* Enhancements
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
* Fixes service issues
- no more crashes after start of a service with battery optimization enabled
- no more service restarts after the app exit with disabled private notifications
* Disable service restart even after reboot if the user didn't allow this
* [Experimental] Disabling logic of start up process from application process. The same is enabled in a service anyway
- every application process creation makes the service running even in situations when it's not needed. For example, RescheduleReceiver from WorkManager receives boot completed event and it triggers service start up
* Returned unneeded part of code. It may be useful (in theory) if user's device doesn't allow any services to be started (it's something that should never happen)
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
* Swipe to reply feature
- ability to reply by swiping on a message from right-to-left or left-to-right
- keyboard will be open automatically
* Only one direction for swipe to reply action
* Floating buttons with unread counters and go to bottom action
* Fixed marking read of long chats without preloaded messages
* Apply suggestions from code review
* Counters fix
* update button size/color
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
* Endless scrolling in a chat view
- scroll position when you open keyboard/change screen orientation will remain the same
- scrolling to top will show messages from history
- unread messages will be positioned at the top of the screen
* Marking chat read message-per-message
* Prevent changing scroll position on orientation change
* Adapted new code to the old code
* refactor
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
* Debug package suffix and ability to override Gradle variables
- now debug builds will have '.debug' suffix by default. It allows to have multiple app builds (debug and release) on the same device. If you don't need this, create a file local.properties and add `application_id_suffix=` into it
- now everyone can override some variables from top-level build.gradle file. For example, gradle_plugin_version, debuggable manifest attribute, and so on. Overriding Gradle plugin version is useful for those who uses Intellij IDEA with older Gradle plugin than in Android Studio
* Prevent socket name conflict from different packages
* Configurable app name for debug build. By default it's SimpleX Debug
* Changed defaults in build.gradle