Commit Graph

35 Commits

Author SHA1 Message Date
Nik Clayton e749b362ca
refactor: Start creating core modules (#286)
The existing code base is a single monolithic module. This is relatively
simple to configure, but many of the tasks to compile the module and
produce the final app have to run in series.

This is unnecessarily slow.

This change starts to split the code in to multiple modules, which are:

- :core:account - AccountManager, to break a dependency cycle
- :core:common - low level types or utilities used in many other modules
- :core:database - database types, DAOs, and DI infrastructure
- :core:network - network types, API definitions, and DI infrastructure
- :core:preferences - shared preferences definitions and DI
infrastructure
- :core:testing - fakes and rules used across different modules

Benchmarking with gradle-profiler shows a ~ 17% reduction in incremental
build times after an ABI change. That will improve further as more code
is moved to modules.

The rough mechanics of the changes are:

- Create the modules, and move existing files in to them. This causes a
  lot of churn in import arguments.

- Convert build.gradle files to build.gradle.kts

- Separate out the data required to display a tab (`TabViewData`) from
  the data required to configure a tab (`TabData`) to avoid circular
  dependencies.

- Abstract the repeated build logic shared between the modules in to
  a set of plugins under `build-logic/`, to simplify configuration of
  the application and library builds.

- Be explicit that some nullable types are non-null at time of use.
  Nullable properties in types imported from modules generally can't be
  smart cast to non-null. There's a detailed discussion of why this
restriction exists at
https://discuss.kotlinlang.org/t/what-is-the-reason-behind-smart-cast-being-impossible-to-perform-when-referenced-class-is-in-another-module/2201.

The changes highlight design problems with the current code, including:

- The main application code is too tightly coupled to the network types
- Too many values are declared unnecessarily nullable
- Dependency cycles between code that make modularisation difficult

Future changes will add more modules.

See #291.
2023-12-04 16:58:36 +01:00
Nik Clayton 1c6c8a7455
fix: Keep network model classes, preventing crash on startup (#251)
Without this the model classes are not retained, which causes a
`ClassCastException` when parsing the new models for the instance v1 and
instance v2 API calls.

Fixes #250
2023-11-13 13:31:31 +01:00
Nik Clayton 1bf13b10f8
refactor: Transition from Tusky to Pachli
- Rename packages to app.pachli.*
- Switch to Pachli icons (blue / orange)
- Reset database schema version to 1
- Reset versionCode to 1 and versionName to "1.0"
- Update colour scheme, use colorPrimary etc through the app
- Use Material UI components for toolbars
- Use "Pachli" in strings (UI, constants, etc)
- Update copyright on code I contributed
- Update README
- Update fastlane metadata
2023-09-05 13:33:37 +02:00
Konrad Pozniak af2727b633
Remove shrinker rules for okhttp (#3560)
Now included automatically in OkHttp.
2023-04-24 12:08:03 +02:00
Goooler 000681c702
Add extra proguard rules for OkHttp (#3350)
* Add extra proguard rules for OkHttp

339732e3a1/okhttp/src/jvmMain/resources/META-INF/proguard/okhttp3.pro (L11-L14)

* Update proguard-rules.pro
2023-02-25 21:40:13 +01:00
Nik Clayton f28252bfd5
Keep all subclasses of PreferenceFragmentCompat (#3162)
* Mark *PreferencesFragment as @Keep

PreferenceFragment references them by string name, which doesn't work after
ProGuard has obfuscated the code in release mode. The name is no longer
valid and the app crashes.

Fixes https://github.com/tuskyapp/Tusky/issues/3161

* Prefer to keep Preference classes with a Proguard rule

Ensures that all PreferenceFragmentCompat are kept, to prevent the risk
that this could break in a new fragment where `@Keep` is accidentally
omitted.
2023-01-13 19:51:42 +01:00
Konrad Pozniak b2f2ca6c22
add shrinker rules to keep bouncycastle EC classes (#2542) 2022-05-19 07:19:16 +02:00
Konrad Pozniak 97fe4f88c5
fix crash in drafts caused by minification of DraftAttachment (#2337)
* fix crash in drafts caused by minification of DraftAttachment

* fix formatting
2022-02-14 19:20:15 +01:00
Konrad Pozniak b145e8163d
add additional R8 rules so conversations work again (#2322) 2022-02-09 20:46:13 +01:00
Konrad Pozniak 0b70f52ad2
add proguard rules to make Jsondadapter annotation work (#2299) 2022-01-21 18:26:57 +01:00
Konrad Pozniak 1586817c3d
Update gradle, kotlin and other dependencies (#2291)
* update gradle, kotlin and other dependencies

* fix new warnings

* remove unused import

* update Proguard rules

* add explicit dependency on Gson to get the newest version

* remove debug flag from proguard rules again

* fix typo
2022-01-20 21:10:32 +01:00
Konrad Pozniak 6281e37aec
improve kotlin related proguard rules (#2190) 2021-06-11 20:50:42 +02:00
Konrad Pozniak 968c4ed3e0
add proguard rule to keep DraftAttachment.Type (#2054) 2021-01-25 16:23:43 +01:00
Konrad Pozniak 1d309850b0
convert EmojiPreference and EmojiCompatFont to Kotlin (#1922)
* convert EmojiPreference and EmojiCompatFont to Kotlin

* move preference related to to dedicated preference package

* update proguard-rules.pro

* reformat & add comment

* maintain disposable information in EmojiPreference instead of EmojiCompatFont
2020-09-02 12:27:51 +02:00
Konrad Pozniak ce779bcdba
cleanup proguard rules (#1819) 2020-06-04 20:17:07 +02:00
Frieder Bluemle 9bc000569d
Update espresso-core to 3.2.0 2020-02-01 11:14:31 -08:00
Konrad Pozniak d8f7845be5
fix r8 rules to avoid crash when downloading Emoji Font (#1312) 2019-06-09 16:56:34 +02:00
pandasoft0 76ce28980c Migrate to Glide (#1175)
* Replace Picasso library with Glide library tuskyapp#1082

* Replace Picasso library with Glide library tuskyapp#1082

* Update load emoji with glide

* Update context used for Glide

* Removed unused import

* Replace deprecated SimpleTarget with CustomTarget

* Fix crash at the view image fragment, remove override image size

* Replace Single.create with Single.fromCallable

* View image fragment refactor

* Fix after merge

* Try to load cached image first and show progress view on failure

* Try to load cached image first and show progress view on failure
2019-04-16 21:39:12 +02:00
Conny Duck 71fb4db915 fix proguard issue 2019-01-15 20:53:38 +01:00
Conny Duck e054edc69d remove more Kotlin null check methods from release bytecode 2018-12-17 23:36:59 +01:00
Conny Duck dd8d2131f7 update proguard rules for okhttp 2018-12-17 16:01:35 +01:00
Konrad Pozniak 418c76d677
add more aggressive proguard config (#741)
* add more aggressive proguard config

* even more optimizations
2018-08-15 20:46:37 +02:00
Ivan Kupalov a5cffe0fea Add Dagger (#554)
* Add Dagger DI

* Preemptively fix tests

* Add missing licenses

* DI fixes

* ci fixes
2018-03-27 19:47:00 +02:00
Conny Duck d4d764ab2d fix production build after upgrading okhttp 2018-03-08 23:04:04 +01:00
Conny Duck c2c607270a improve proguard configuration 2018-03-01 19:01:44 +01:00
Ivan Kupalov df4dfa7766 Stop adding link info when composing toot (#418) 2017-10-27 13:19:12 +02:00
Conny Duck 3729cd9c19 fix proguard config for new libraries 2017-08-11 19:19:35 +02:00
Vavassor bb0ea876fa Okay, toss BouncyCastleProvider so we can release a beta. 2017-07-18 00:30:24 -04:00
Vavassor 857f39b480 Widens proguard to just keep everything under org.bouncycastle when minifying. Also fixes a bug where the composer's content warning is hidden after changing orientation. 2017-07-17 00:06:48 -04:00
Vavassor f4d627e815 Release 1.1.4-beta.6 2017-07-16 18:26:56 -04:00
Vavassor 6e67db7631 Release 1.1.4-beta.5 2017-07-15 03:56:22 -04:00
torrentcome ea649dc851 (proguard) add forgoten rule for jsoup in release 2017-06-08 14:39:48 +02:00
Conny Duck 1a39e58d3c remove unnecessary Log utility class, replace Exception.printStackTrace with logging 2017-05-23 21:34:31 +02:00
Konrad Pozniak d23d12aa9c added proguard config 2017-04-08 00:08:51 +02:00
Vavassor bba1b37fd8 initial commit 2017-01-02 18:30:27 -05:00