Commit 52248ba
authored
feat: implement in-app automatic update downloader (#587)
This pull request introduces a comprehensive auto-update system for the
app, including background update checks, user notifications, and
streamlined update installation. It adds a new dependency for update
management, integrates update logic into the UI, and introduces new
services and receivers to handle update downloads and notifications.
**Auto-update infrastructure:**
- Added the `AutoUpdater` library dependency to manage update checks and
installations. (`app/build.gradle.kts`)
- Introduced `AppUpdateWorker` for periodic background update checks,
which notifies users if an update is available and updates cached state.
(`app/src/main/java/com/sameerasw/essentials/services/AppUpdateWorker.kt`)
- Added `DownloadUpdateReceiver` to handle update download and
installation requests via broadcast intents.
(`app/src/main/java/com/sameerasw/essentials/services/receivers/DownloadUpdateReceiver.kt`,
`AndroidManifest.xml`)
[[1]](diffhunk://#diff-0a4b57680d9fb2620ea9cf1da508d0ecb87c77673470842af9ffd72b7048eecfR1-R41)
[[2]](diffhunk://#diff-7fa6aef292187a049f7a4d6060d8df3ba212d838789c78940bd363344b1c38cdR1033-R1040)
**Update checking and notification logic:**
- Enhanced `UpdateRepository` to use `AutoUpdateManagerHelper` for
update checks, fallback to GitHub if needed, and improved error
handling.
(`app/src/main/java/com/sameerasw/essentials/data/repository/UpdateRepository.kt`)
[[1]](diffhunk://#diff-9af604644cfdd546a42e6abe4c147709a9e9f894b25db50d83afd83faeb40de2R3-R41)
[[2]](diffhunk://#diff-9af604644cfdd546a42e6abe4c147709a9e9f894b25db50d83afd83faeb40de2L23-R53)
[[3]](diffhunk://#diff-9af604644cfdd546a42e6abe4c147709a9e9f894b25db50d83afd83faeb40de2L35)
- Registered the `REQUEST_INSTALL_PACKAGES` permission for update
installations.
(`app/src/main/java/com/sameerasw/essentials/domain/registry/PermissionRegistry.kt`)
**UI improvements for updates:**
- Updated both `MainActivity` and `SettingsActivity` to display update
status, show animated badges when updates are available, and provide a
button to check for or install updates.
(`app/src/main/java/com/sameerasw/essentials/MainActivity.kt`,
`app/src/main/java/com/sameerasw/essentials/SettingsActivity.kt`)
[[1]](diffhunk://#diff-ad4ba0c464c3da383256c4282daceee29c13d8de8e60416fef688e3a78f49effR246)
[[2]](diffhunk://#diff-ad4ba0c464c3da383256c4282daceee29c13d8de8e60416fef688e3a78f49effL253-R273)
[[3]](diffhunk://#diff-ad4ba0c464c3da383256c4282daceee29c13d8de8e60416fef688e3a78f49effR604-R639)
[[4]](diffhunk://#diff-576ba73ddab3e3ff415e6dc1c0b3b670b182d923408666f9be5a506cd6f9f5a1R257)
[[5]](diffhunk://#diff-576ba73ddab3e3ff415e6dc1c0b3b670b182d923408666f9be5a506cd6f9f5a1R422-R498)
[[6]](diffhunk://#diff-576ba73ddab3e3ff415e6dc1c0b3b670b182d923408666f9be5a506cd6f9f5a1L882-L950)
[[7]](diffhunk://#diff-ad4ba0c464c3da383256c4282daceee29c13d8de8e60416fef688e3a78f49effR31-R47)
These changes together enable seamless update management, improve user
experience around updates, and lay the groundwork for future
enhancements to the app's update flow.27 files changed
Lines changed: 667 additions & 102 deletions
File tree
- app
- src/main
- java/com/sameerasw/essentials
- data/repository
- domain/registry
- services
- receivers
- ui/components/sheets
- utils
- viewmodels
- res
- drawable
- raw
- values-en-rUS
- values-en
- values-he
- values-in-rID
- values-iw-rIL
- values-pt-rPT
- values-zh-rCN
- values
- xml
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
158 | 158 | | |
159 | 159 | | |
160 | 160 | | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
161 | 164 | | |
162 | 165 | | |
163 | 166 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1030 | 1030 | | |
1031 | 1031 | | |
1032 | 1032 | | |
| 1033 | + | |
| 1034 | + | |
| 1035 | + | |
| 1036 | + | |
| 1037 | + | |
| 1038 | + | |
| 1039 | + | |
| 1040 | + | |
1033 | 1041 | | |
1034 | 1042 | | |
1035 | 1043 | | |
| |||
Lines changed: 57 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
31 | 48 | | |
32 | 49 | | |
33 | 50 | | |
| |||
226 | 243 | | |
227 | 244 | | |
228 | 245 | | |
| 246 | + | |
229 | 247 | | |
230 | 248 | | |
231 | 249 | | |
| |||
250 | 268 | | |
251 | 269 | | |
252 | 270 | | |
253 | | - | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
254 | 274 | | |
255 | 275 | | |
256 | 276 | | |
| |||
581 | 601 | | |
582 | 602 | | |
583 | 603 | | |
| 604 | + | |
| 605 | + | |
| 606 | + | |
| 607 | + | |
| 608 | + | |
| 609 | + | |
| 610 | + | |
| 611 | + | |
| 612 | + | |
| 613 | + | |
| 614 | + | |
| 615 | + | |
| 616 | + | |
| 617 | + | |
| 618 | + | |
| 619 | + | |
| 620 | + | |
| 621 | + | |
| 622 | + | |
| 623 | + | |
| 624 | + | |
| 625 | + | |
| 626 | + | |
| 627 | + | |
| 628 | + | |
| 629 | + | |
| 630 | + | |
| 631 | + | |
| 632 | + | |
| 633 | + | |
| 634 | + | |
| 635 | + | |
| 636 | + | |
| 637 | + | |
| 638 | + | |
| 639 | + | |
584 | 640 | | |
585 | 641 | | |
586 | 642 | | |
| |||
Lines changed: 78 additions & 69 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
254 | 254 | | |
255 | 255 | | |
256 | 256 | | |
| 257 | + | |
257 | 258 | | |
258 | 259 | | |
259 | 260 | | |
| |||
418 | 419 | | |
419 | 420 | | |
420 | 421 | | |
| 422 | + | |
| 423 | + | |
| 424 | + | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
| 435 | + | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
| 446 | + | |
| 447 | + | |
| 448 | + | |
| 449 | + | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
| 455 | + | |
| 456 | + | |
| 457 | + | |
| 458 | + | |
| 459 | + | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
| 477 | + | |
| 478 | + | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
421 | 499 | | |
422 | 500 | | |
423 | 501 | | |
| |||
879 | 957 | | |
880 | 958 | | |
881 | 959 | | |
882 | | - | |
883 | | - | |
884 | | - | |
885 | | - | |
886 | | - | |
887 | | - | |
888 | | - | |
889 | | - | |
890 | | - | |
891 | | - | |
892 | | - | |
893 | | - | |
894 | | - | |
895 | | - | |
896 | | - | |
897 | | - | |
898 | | - | |
899 | | - | |
900 | | - | |
901 | | - | |
902 | | - | |
903 | | - | |
904 | | - | |
905 | | - | |
906 | | - | |
907 | | - | |
908 | | - | |
909 | | - | |
910 | | - | |
911 | | - | |
912 | | - | |
913 | | - | |
914 | | - | |
915 | | - | |
916 | | - | |
917 | | - | |
918 | | - | |
919 | | - | |
920 | | - | |
921 | | - | |
922 | | - | |
923 | | - | |
924 | | - | |
925 | | - | |
926 | | - | |
927 | | - | |
928 | | - | |
929 | | - | |
930 | | - | |
931 | | - | |
932 | | - | |
933 | | - | |
934 | | - | |
935 | | - | |
936 | | - | |
937 | | - | |
938 | | - | |
939 | | - | |
940 | | - | |
941 | | - | |
942 | | - | |
943 | | - | |
944 | | - | |
945 | | - | |
946 | | - | |
947 | | - | |
948 | | - | |
949 | | - | |
950 | | - | |
951 | 960 | | |
952 | 961 | | |
953 | 962 | | |
| |||
Lines changed: 31 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
| 3 | + | |
3 | 4 | | |
4 | 5 | | |
| 6 | + | |
5 | 7 | | |
6 | 8 | | |
| 9 | + | |
7 | 10 | | |
8 | 11 | | |
9 | 12 | | |
10 | 13 | | |
11 | 14 | | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
12 | 42 | | |
13 | 43 | | |
14 | 44 | | |
| |||
20 | 50 | | |
21 | 51 | | |
22 | 52 | | |
23 | | - | |
| 53 | + | |
24 | 54 | | |
25 | 55 | | |
26 | 56 | | |
| |||
32 | 62 | | |
33 | 63 | | |
34 | 64 | | |
35 | | - | |
36 | 65 | | |
37 | 66 | | |
38 | 67 | | |
| |||
Lines changed: 3 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
106 | 106 | | |
107 | 107 | | |
108 | 108 | | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
109 | 112 | | |
0 commit comments