diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 61c5e2e3a51b03a05d441ce3147f18a95a14c984..62a91128103a7eb96e570dafcd6a93001db9a061 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,127 +1,162 @@
-image: registry.gitlab.e.foundation/e/os/docker-android-apps-cicd:latest
-
-stages:
- - debug
- - release
-
-before_script:
- - export GRADLE_USER_HOME=$(pwd)/.gradle
- - chmod +x ./gradlew
-
-
-# Debug build related jobs
-buildDebug:
- stage: debug
- script:
- - ./gradlew assembleDebug
- artifacts:
- paths:
- - app/build/outputs/apk/debug/
-
-test:
- allow_failure: true
- stage: debug
- script:
- - ./gradlew test -PtestAccountName="$testAccountName" -PtestAccountPwd="$testAccountPwd" -PtestServerUrl="$testServerUrl"
- artifacts:
- when: always
- paths:
- - app/build/test-results/*/TEST-*.xml
- - app/build/reports/tests/*
- reports:
- junit: app/build/test-results/*/TEST-*.xml
-
-# Default lint configuration for debug builds
-# Manual as we don't want to run them generally for debug builds
-.lintDebugDefault:
- stage: debug
- when: manual
- allow_failure: true
-
-lintDebug:
- extends: .lintDebugDefault
- script:
- - ./gradlew lintDebug
- artifacts:
- paths:
- - app/build/reports/
-
-ktlintDebug:
- extends: .lintDebugDefault
- script:
- - ./gradlew app:ktlintCheck --info
- artifacts:
- paths:
- - app/build/reports/ktlint/
-
-# Release build related jobs
-
-# Default configuration for release builds
-# Only on "master", "merge_request_event" and protected branches
-buildRelease:
- stage: release
- allow_failure: false
- rules:
- - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
- when: always
- - if: '$CI_COMMIT_REF_PROTECTED == "true"'
- when: always
- - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
- when: always
- script:
- - ./gradlew assembleRelease
- artifacts:
- paths:
- - app/build/outputs/apk/release/
-
-# Release jobs to generate signed artifacts
-.releaseSigned:
- stage: release
- allow_failure: false
- before_script:
- - export GRADLE_USER_HOME=$(pwd)/.gradle
- - chmod +x ./gradlew
- - echo "${KEYSTORE}" | base64 -d > keystore/proprietary.keystore
- rules:
- - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
- when: always
- - if: '$CI_COMMIT_REF_PROTECTED == "true"'
- when: always
-
-buildReleaseDev:
- extends: .releaseSigned
- script:
- - ./gradlew assembleReleaseDev
- artifacts:
- paths:
- - app/build/outputs/apk/releaseDev/
-
-buildReleaseStable:
- extends: .releaseSigned
- script:
- - ./gradlew assembleReleaseStable
- artifacts:
- paths:
- - app/build/outputs/apk/releaseStable/
-
-# Default lint configuration for release jobs
-.lintReleaseDefault:
- stage: release
- when: always
- allow_failure: false
-
-lintRelease:
- extends: .lintReleaseDefault
- script:
- - ./gradlew lintRelease
- artifacts:
- paths:
- - app/build/reports/
-
-ktlintRelease:
- extends: .lintReleaseDefault
- script:
- - ./gradlew app:ktlintCheck --info
- artifacts:
- paths:
- - app/build/reports/ktlint/
+image: registry.gitlab.e.foundation/e/os/docker-android-apps-cicd:55-workshop-auto-release
+
+stages:
+ - debug
+ - release
+ - publish
+
+before_script:
+ - export GRADLE_USER_HOME=$(pwd)/.gradle
+ - chmod +x ./gradlew
+
+# Debug build related jobs
+buildDebug:
+ stage: debug
+ script:
+ - ./gradlew assembleDebug
+ artifacts:
+ paths:
+ - app/build/outputs/apk/debug/
+
+test:
+ allow_failure: true
+ stage: debug
+ script:
+ - ./gradlew test -PtestAccountName="$testAccountName" -PtestAccountPwd="$testAccountPwd" -PtestServerUrl="$testServerUrl"
+ artifacts:
+ when: always
+ paths:
+ - app/build/test-results/*/TEST-*.xml
+ - app/build/reports/tests/*
+ reports:
+ junit: app/build/test-results/*/TEST-*.xml
+
+# Default lint configuration for debug builds
+# Manual as we don't want to run them generally for debug builds
+.lintDebugDefault:
+ stage: debug
+ when: manual
+ allow_failure: true
+
+lintDebug:
+ extends: .lintDebugDefault
+ script:
+ - ./gradlew lintDebug
+ artifacts:
+ paths:
+ - app/build/reports/
+
+ktlintDebug:
+ extends: .lintDebugDefault
+ script:
+ - ./gradlew app:ktlintCheck --info
+ artifacts:
+ paths:
+ - app/build/reports/ktlint/
+
+# Release build related jobs
+
+# Default configuration for release builds
+# Only on "master", "merge_request_event" and protected branches
+buildRelease:
+ stage: release
+ allow_failure: false
+ rules:
+ - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
+ when: always
+ - if: '$CI_COMMIT_REF_PROTECTED == "true"'
+ when: always
+ - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
+ when: always
+ script:
+ - ./gradlew assembleRelease
+ artifacts:
+ paths:
+ - app/build/outputs/apk/release/
+
+# Release jobs to generate signed artifacts
+.releaseSigned:
+ stage: release
+ allow_failure: false
+ before_script:
+ - export GRADLE_USER_HOME=$(pwd)/.gradle
+ - chmod +x ./gradlew
+ - echo "${KEYSTORE}" | base64 -d > keystore/proprietary.keystore
+ rules:
+ - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
+ when: always
+ - if: '$CI_COMMIT_REF_PROTECTED == "true"'
+ when: always
+
+buildReleaseDev:
+ extends: .releaseSigned
+ script:
+ - ./gradlew assembleReleaseDev
+ artifacts:
+ paths:
+ - app/build/outputs/apk/releaseDev/
+
+buildReleaseStable:
+ extends: .releaseSigned
+ script:
+ - ./gradlew assembleReleaseStable
+ artifacts:
+ paths:
+ - app/build/outputs/apk/releaseStable/
+
+# Default lint configuration for release jobs
+.lintReleaseDefault:
+ stage: release
+ when: always
+ allow_failure: false
+
+lintRelease:
+ extends: .lintReleaseDefault
+ script:
+ - ./gradlew lintRelease
+ artifacts:
+ paths:
+ - app/build/reports/
+
+ktlintRelease:
+ extends: .lintReleaseDefault
+ script:
+ - ./gradlew app:ktlintCheck --info
+ artifacts:
+ paths:
+ - app/build/reports/ktlint/
+
+
+pushToPrebuilt:
+ stage: publish
+ needs: ["buildRelease"]
+ when: manual
+ variables:
+ NEW_APK_PATH: "app/build/outputs/apk/release/"
+ before_script:
+ - 'which ssh-agent || ( apt update -y && apt install openssh-client -y )'
+ - eval $(ssh-agent -s)
+ - echo "$SSH_E_ROBOT_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null
+ - mkdir -p ~/.ssh
+ - chmod 700 ~/.ssh
+ - echo "$SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts
+ - chmod 644 ~/.ssh/known_hosts
+ - git config user.email "gitlab@e.foundation"
+ - git config user.name "gitlab"
+ script:
+ - NEW_APK_NAME=$(basename ${NEW_APK_PATH}*-release.apk)
+ - NEW_APK_VERSION=$(awk -F '-' '{print $2}' <<< "$NEW_APK_NAME")
+ - echo $NEW_APK_NAME
+ - echo $NEW_APK_VERSION
+ - git lfs clone git@gitlab.e.foundation:e/os/android_prebuilts_prebuiltapks_lfs.git
+ - cd android_prebuilts_prebuiltapks_lfs
+ - rm Apps/*-release.apk
+ - mv ../${NEW_APK_PATH}/${NEW_APK_NAME} Apps/
+ # todo: improve to replace sed command, by a new one based on REGEXP (instead of using line number)
+ - sed -i "6s/.*/LOCAL_SRC_FILES := ${NEW_APK_NAME}/" Apps/Android.mk
+ - git add Apps
+ - git status
+ - git commit -m "Update Apps Lounge apk to ${NEW_APK_VERSION}\nFrom ${CI_COMMIT_SHA}"
+ - git push
+ # Sometimes a single push doesn't do all the job, so we have to push twice
+ - git push
\ No newline at end of file
diff --git a/app/src/main/java/foundation/e/apps/MainActivity.kt b/app/src/main/java/foundation/e/apps/MainActivity.kt
index 06c5a2b041197bd7a1e9386f56bdfc9e43a3d329..2b5c869551c5245baae4c589c569ad81176d2927 100644
--- a/app/src/main/java/foundation/e/apps/MainActivity.kt
+++ b/app/src/main/java/foundation/e/apps/MainActivity.kt
@@ -73,7 +73,7 @@ class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
-
+
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
diff --git a/app/src/main/java/foundation/e/apps/api/fused/FusedAPIImpl.kt b/app/src/main/java/foundation/e/apps/api/fused/FusedAPIImpl.kt
index 564e6263177a3cfccf9fcf8052d856e9214049b7..35d71d0889653d5b6fa8f9a1b7e2442817225e7a 100644
--- a/app/src/main/java/foundation/e/apps/api/fused/FusedAPIImpl.kt
+++ b/app/src/main/java/foundation/e/apps/api/fused/FusedAPIImpl.kt
@@ -1042,7 +1042,7 @@ class FusedAPIImpl @Inject constructor(
app: Category
) {
category.drawable =
- getCategoryIconResource(app.type, getCategoryIconName(category))
+ getCategoryIconResource(getCategoryIconName(category))
}
private fun getCategoryIconName(category: FusedCategory): String {
@@ -1099,17 +1099,13 @@ class FusedAPIImpl @Inject constructor(
return FusedCategory(
id = category,
title = getCategoryTitle(category, categories),
- drawable = getCategoryIconResource(appType, category),
+ drawable = getCategoryIconResource(category),
tag = tag
)
}
- private fun getCategoryIconResource(appType: Category.Type, category: String): Int {
- return if (appType == Category.Type.APPLICATION) {
- CategoryUtils.provideAppsCategoryIconResource(category)
- } else {
- CategoryUtils.provideGamesCategoryIconResource(category)
- }
+ private fun getCategoryIconResource(category: String): Int {
+ return CategoryUtils.provideAppsCategoryIconResource(category)
}
private fun getCategoryTitle(category: String, categories: Categories): String {
diff --git a/app/src/main/java/foundation/e/apps/api/fused/utils/CategoryUtils.kt b/app/src/main/java/foundation/e/apps/api/fused/utils/CategoryUtils.kt
index f3dfe82affccb80da532aae3e0114addf8dc552d..c6048a94a243307295f5a5e35f140584cba2f982 100644
--- a/app/src/main/java/foundation/e/apps/api/fused/utils/CategoryUtils.kt
+++ b/app/src/main/java/foundation/e/apps/api/fused/utils/CategoryUtils.kt
@@ -175,47 +175,4 @@ object CategoryUtils {
R.drawable.ic_cat_default
}
}
-
- fun provideGamesCategoryIconResource(categoryId: String): Int {
- return when (categoryId) {
- "action" ->
- R.drawable.ic_action
- "adventure" ->
- R.drawable.ic_adventure
- "arcade" ->
- R.drawable.ic_arcade
- "board" ->
- R.drawable.ic_board
- "card" ->
- R.drawable.ic_card
- "casino" ->
- R.drawable.ic_casino
- "casual" ->
- R.drawable.ic_casual
- "educational" ->
- R.drawable.ic_educational
- "music" ->
- R.drawable.ic_music
- "game_open_games", "web_games" ->
- R.drawable.ic_arcade
- "puzzle" ->
- R.drawable.ic_puzzle
- "racing" ->
- R.drawable.ic_racing
- "role_playing" ->
- R.drawable.ic_role_playing
- "simulation" ->
- R.drawable.ic_simulation
- "sports" ->
- R.drawable.ic_sports
- "strategy" ->
- R.drawable.ic_strategy
- "trivia" ->
- R.drawable.ic_trivia
- "word" ->
- R.drawable.ic_word
- else ->
- R.drawable.ic_cat_default
- }
- }
}
diff --git a/app/src/main/res/drawable-nodpi/ic_cat_open_games.png b/app/src/main/res/drawable-nodpi/ic_cat_open_games.png
deleted file mode 100644
index 3796c8db67074825b51f50d0730043cb7a0831e9..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/drawable-nodpi/ic_cat_open_games.png and /dev/null differ
diff --git a/app/src/main/res/drawable/ic_action.xml b/app/src/main/res/drawable/ic_action.xml
deleted file mode 100644
index 6d712298d84fc39ecce3753edf28794257e9bd8b..0000000000000000000000000000000000000000
--- a/app/src/main/res/drawable/ic_action.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/drawable/ic_adventure.xml b/app/src/main/res/drawable/ic_adventure.xml
deleted file mode 100644
index e0519402889c822d1e04986ecd0ecc06a36a525e..0000000000000000000000000000000000000000
--- a/app/src/main/res/drawable/ic_adventure.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/drawable/ic_arcade.xml b/app/src/main/res/drawable/ic_arcade.xml
deleted file mode 100644
index 2a27b05d2bcda2dc003f4aaaad282ddd303cfa6c..0000000000000000000000000000000000000000
--- a/app/src/main/res/drawable/ic_arcade.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/drawable/ic_board.xml b/app/src/main/res/drawable/ic_board.xml
deleted file mode 100644
index 6cfa934fdc0c95676857a314fdb0bd7b2077a610..0000000000000000000000000000000000000000
--- a/app/src/main/res/drawable/ic_board.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/drawable/ic_books_and_reference.xml b/app/src/main/res/drawable/ic_books_and_reference.xml
index 509e4be85e0cc4ecbe4c32a2c87d9d73b9e33d1a..8b50add71bbcbed230adb25be99413ea65ce3511 100644
--- a/app/src/main/res/drawable/ic_books_and_reference.xml
+++ b/app/src/main/res/drawable/ic_books_and_reference.xml
@@ -7,16 +7,16 @@
diff --git a/app/src/main/res/drawable/ic_card.xml b/app/src/main/res/drawable/ic_card.xml
deleted file mode 100644
index 7a236aced6c986f2eb5094c5ab68fb99b6895cb5..0000000000000000000000000000000000000000
--- a/app/src/main/res/drawable/ic_card.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/drawable/ic_casino.xml b/app/src/main/res/drawable/ic_casino.xml
deleted file mode 100644
index d113de9ca12995c0ad37f3b5b26fea9c597214a0..0000000000000000000000000000000000000000
--- a/app/src/main/res/drawable/ic_casino.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/drawable/ic_casual.xml b/app/src/main/res/drawable/ic_casual.xml
deleted file mode 100644
index 6ae3bb93c624ac585ecd5bf403d0392f90f1d778..0000000000000000000000000000000000000000
--- a/app/src/main/res/drawable/ic_casual.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/drawable/ic_cat_connectivity.xml b/app/src/main/res/drawable/ic_cat_connectivity.xml
index 0a777dae6460bfba3c1f0e59adf9ed3c8ad6726e..3f98643aba59b93693cced698b51d905714ad064 100644
--- a/app/src/main/res/drawable/ic_cat_connectivity.xml
+++ b/app/src/main/res/drawable/ic_cat_connectivity.xml
@@ -5,8 +5,8 @@
android:viewportHeight="32">
+ android:fillColor="@color/colorAccent"/>
+ android:fillColor="@color/colorAccent"/>
diff --git a/app/src/main/res/drawable/ic_cat_default.xml b/app/src/main/res/drawable/ic_cat_default.xml
index be76fbd84aec91ab21c3e5c3268b83428bdd5856..9d61ffbf739c032f42a2c8ae417aa354a3fccfd9 100644
--- a/app/src/main/res/drawable/ic_cat_default.xml
+++ b/app/src/main/res/drawable/ic_cat_default.xml
@@ -8,18 +8,18 @@
android:pathData="M4.2733,4.3286h24.5429v23.3429h-24.5429z"/>
+ android:fillColor="@color/colorAccent"/>
+ android:fillColor="@color/colorAccent"/>
+ android:fillColor="@color/colorAccent"/>
+ android:fillColor="@color/colorAccent"/>
+ android:fillColor="@color/colorAccent"/>
diff --git a/app/src/main/res/drawable/ic_cat_development.xml b/app/src/main/res/drawable/ic_cat_development.xml
index 784ba4d3116517a5103cde527970125b0e03f9fe..8d4241960ed43a9096423fb592686a5fc372ccf9 100644
--- a/app/src/main/res/drawable/ic_cat_development.xml
+++ b/app/src/main/res/drawable/ic_cat_development.xml
@@ -8,12 +8,12 @@
android:pathData="M2.6607,4.5857h28.3143v22.8286h-28.3143z"/>
+ android:fillColor="@color/colorAccent"/>
+ android:fillColor="@color/colorAccent"/>
+ android:fillColor="@color/colorAccent"/>
diff --git a/app/src/main/res/drawable/ic_cat_graphics.xml b/app/src/main/res/drawable/ic_cat_graphics.xml
index 9939374666902f2a6d827433e40a44f811d7071c..79795ac3566de3fcdbbf7465d90f564f58c423fc 100644
--- a/app/src/main/res/drawable/ic_cat_graphics.xml
+++ b/app/src/main/res/drawable/ic_cat_graphics.xml
@@ -5,5 +5,5 @@
android:viewportHeight="32">
+ android:fillColor="@color/colorAccent"/>
diff --git a/app/src/main/res/drawable/ic_cat_health_and_fitness.xml b/app/src/main/res/drawable/ic_cat_health_and_fitness.xml
index 12198be030f2561b8075a9fc4fc05801b4534862..238a4e04883aeccd90d22493832120eca10e07e8 100644
--- a/app/src/main/res/drawable/ic_cat_health_and_fitness.xml
+++ b/app/src/main/res/drawable/ic_cat_health_and_fitness.xml
@@ -5,5 +5,5 @@
android:viewportHeight="32">
+ android:fillColor="@color/colorAccent"/>
diff --git a/app/src/main/res/drawable/ic_cat_house_and_home.xml b/app/src/main/res/drawable/ic_cat_house_and_home.xml
index 8e429cfff53509e0bae8f63a7ffd5404f976abd2..f6328b46d9c9c55e1625a93a1276da8baade30f5 100644
--- a/app/src/main/res/drawable/ic_cat_house_and_home.xml
+++ b/app/src/main/res/drawable/ic_cat_house_and_home.xml
@@ -8,15 +8,15 @@
android:pathData="M2.0018,2.5715h29.0857v26.8571h-29.0857z"/>
+ android:fillColor="@color/colorAccent"/>
+ android:fillColor="@color/colorAccent"/>
+ android:fillColor="@color/colorAccent"/>
+ android:fillColor="@color/colorAccent"/>
diff --git a/app/src/main/res/drawable/ic_cat_internet.xml b/app/src/main/res/drawable/ic_cat_internet.xml
index d110f3d342eff7eddd16d03fce6434aee8d112a1..5c170f2079374680be6a210fb40bd4f5b4aab195 100644
--- a/app/src/main/res/drawable/ic_cat_internet.xml
+++ b/app/src/main/res/drawable/ic_cat_internet.xml
@@ -5,5 +5,5 @@
android:viewportHeight="32">
+ android:fillColor="@color/colorAccent"/>
diff --git a/app/src/main/res/drawable/ic_cat_open_games.xml b/app/src/main/res/drawable/ic_cat_open_games.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9de037472a612ab9a743be54221be017fe82b33f
--- /dev/null
+++ b/app/src/main/res/drawable/ic_cat_open_games.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_cat_security.xml b/app/src/main/res/drawable/ic_cat_security.xml
index e17f9e6f2e8d6531c021cf44c5af5da3be1de6a3..67700eb0696b954f11f1e0df76c069797ce2ddcf 100644
--- a/app/src/main/res/drawable/ic_cat_security.xml
+++ b/app/src/main/res/drawable/ic_cat_security.xml
@@ -8,8 +8,8 @@
android:strokeLineJoin="round"
android:strokeWidth="2.1"
android:fillColor="#00000000"
- android:strokeColor="#0088ED"/>
+ android:strokeColor="@color/colorAccent"/>
+ android:fillColor="@color/colorAccent"/>
diff --git a/app/src/main/res/drawable/ic_cat_system.xml b/app/src/main/res/drawable/ic_cat_system.xml
index bdd9b11aed2ad72f4804b20467db8a9fda8b7d7e..64330895a0f08eae33781d3b09dcc03ed05ce233 100644
--- a/app/src/main/res/drawable/ic_cat_system.xml
+++ b/app/src/main/res/drawable/ic_cat_system.xml
@@ -5,8 +5,8 @@
android:viewportHeight="32">
+ android:fillColor="@color/colorAccent"/>
+ android:fillColor="@color/colorAccent"/>
diff --git a/app/src/main/res/drawable/ic_educational.xml b/app/src/main/res/drawable/ic_educational.xml
deleted file mode 100644
index a71f9aeb088f0dba0c47358f7502409689b8418f..0000000000000000000000000000000000000000
--- a/app/src/main/res/drawable/ic_educational.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/drawable/ic_music.xml b/app/src/main/res/drawable/ic_music.xml
deleted file mode 100644
index 0182d3809ac622696b94daae10eb668a0135a512..0000000000000000000000000000000000000000
--- a/app/src/main/res/drawable/ic_music.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/drawable/ic_puzzle.xml b/app/src/main/res/drawable/ic_puzzle.xml
deleted file mode 100644
index cc67464bda2a4c74838f50090188345a1c7855a1..0000000000000000000000000000000000000000
--- a/app/src/main/res/drawable/ic_puzzle.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
diff --git a/app/src/main/res/drawable/ic_racing.xml b/app/src/main/res/drawable/ic_racing.xml
deleted file mode 100644
index 791995868863d350c5006f353cc19c44c9757331..0000000000000000000000000000000000000000
--- a/app/src/main/res/drawable/ic_racing.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/drawable/ic_role_playing.xml b/app/src/main/res/drawable/ic_role_playing.xml
deleted file mode 100644
index 665e4eea26476655f2cdb5e4991f433c84c0e56c..0000000000000000000000000000000000000000
--- a/app/src/main/res/drawable/ic_role_playing.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/drawable/ic_simulation.xml b/app/src/main/res/drawable/ic_simulation.xml
deleted file mode 100644
index f3cafa0a72642b863a85cb82f6c11eb203da7a17..0000000000000000000000000000000000000000
--- a/app/src/main/res/drawable/ic_simulation.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
diff --git a/app/src/main/res/drawable/ic_sports.xml b/app/src/main/res/drawable/ic_sports.xml
deleted file mode 100644
index 1aaf48c005d5bc7a7489d86953224e12c6539e48..0000000000000000000000000000000000000000
--- a/app/src/main/res/drawable/ic_sports.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/drawable/ic_strategy.xml b/app/src/main/res/drawable/ic_strategy.xml
deleted file mode 100644
index e65de1166dcabe0ecabf065cbe197b9c9c75e362..0000000000000000000000000000000000000000
--- a/app/src/main/res/drawable/ic_strategy.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/drawable/ic_trivia.xml b/app/src/main/res/drawable/ic_trivia.xml
deleted file mode 100644
index 8981888f3c67983025e7a2314d8183a6921d9aec..0000000000000000000000000000000000000000
--- a/app/src/main/res/drawable/ic_trivia.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/drawable/ic_watch_apps.xml b/app/src/main/res/drawable/ic_watch_apps.xml
index 9e2dcfdc4233bd630a58a22f38e2e3f323756d3f..1b37296697d4776f47b4b7cf8ea617655aa6ab38 100644
--- a/app/src/main/res/drawable/ic_watch_apps.xml
+++ b/app/src/main/res/drawable/ic_watch_apps.xml
@@ -5,23 +5,23 @@
android:viewportHeight="33">
+ android:fillColor="@color/colorAccent"/>
+ android:fillColor="@color/colorAccent"/>
+ android:fillColor="@color/colorAccent"/>
+ android:fillColor="@color/colorAccent"/>
+ android:fillColor="@color/colorAccent"/>
+ android:fillColor="@color/colorAccent"/>
+ android:fillColor="@color/colorAccent"/>
diff --git a/app/src/main/res/drawable/ic_watchface.xml b/app/src/main/res/drawable/ic_watchface.xml
index 63d7df34fa5cc23c03dbcff16491f36d12558fb1..587de7688bae88888e3366433cb9d8a0842acd1b 100644
--- a/app/src/main/res/drawable/ic_watchface.xml
+++ b/app/src/main/res/drawable/ic_watchface.xml
@@ -1,7 +1,7 @@
-
-
-
-
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_word.xml b/app/src/main/res/drawable/ic_word.xml
deleted file mode 100644
index 9730837ac84bb0ec84cb6c81444bab0d4612fec3..0000000000000000000000000000000000000000
--- a/app/src/main/res/drawable/ic_word.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
diff --git a/app/src/main/res/layout/categories_list_item.xml b/app/src/main/res/layout/categories_list_item.xml
index 6fe8bb8acb4d2743bd08d6cc9eea91c4a6d0ea6b..7e8daca7cf982f584b0ddf83cf104debfd2abaf4 100644
--- a/app/src/main/res/layout/categories_list_item.xml
+++ b/app/src/main/res/layout/categories_list_item.xml
@@ -18,6 +18,7 @@
-
+ android:layout_height="wrap_content"
+ android:orientation="horizontal">
+ android:scaleType="fitXY"
+ app:layout_constraintLeft_toLeftOf="parent"
+ app:layout_constraintTop_toTopOf="parent" />
-
-
+ android:textSize="16sp"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintLeft_toRightOf="@+id/categoryIcon"
+ app:layout_constraintRight_toLeftOf="@+id/categoryTag"
+ app:layout_constraintTop_toTopOf="parent" />
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintRight_toRightOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ tools:text="@string/open_source"
+ />
-
+
\ No newline at end of file
diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml
index a2920a2c473473a9ad8783e741f4bc766d5b5fdb..82d7d8c790960c353640e7d0499cddd17eb1cab5 100644
--- a/app/src/main/res/values-uk/strings.xml
+++ b/app/src/main/res/values-uk/strings.xml
@@ -84,4 +84,18 @@
Оновлення
Пошук
Оновлення не вдалося. Автоматичні повторні спроби уже в процесі.
+ Трендові додатки в Топі
+ Безкоштовні ігри в Топі
+ Дослідити PWA
+ Дослідити
+
+ - %1$d оновлення додатку доступне
+ - %1$d оновлень додатків доступно
+ - %1$d оновлень додатків доступно
+ - %1$d оновлень додатків доступно
+
+ Неможливо відобразити додаток Google Play коли дозволені тільки додатки з відкритим кодом.
+ Оновлено до: %1$s
+ Рейтинг Приватності автоматично обчислений з дозволів та трекерів, що були знайдені в додатку.<br /><br /> Його алгоритм обчислення можна <a href=%1$s>побачити тут</a>.<br /><br />Виявлення трекерів робиться за допомогою<a href=%2$s> Інструментів Exodus Privacy</a>.<br /><br />Рейтинг від 0 до 10.<br /><br />Дізнайтесь більше про те, як обчислюється Рейтинг Приватності, які в нього є обмеження та як він може допомогти Вам захистити себе від мікротаргетингу <a href=%3$s>на цій сторінці</a>.
+ Закрити
\ No newline at end of file
diff --git a/app/src/test/java/foundation/e/apps/FusedApiImplTest.kt b/app/src/test/java/foundation/e/apps/FusedApiImplTest.kt
index 2ced7456ac689a062238894348e22aefde06f4d8..ac6c7281d654b2bdc23352173ccf01a72020bed6 100644
--- a/app/src/test/java/foundation/e/apps/FusedApiImplTest.kt
+++ b/app/src/test/java/foundation/e/apps/FusedApiImplTest.kt
@@ -124,12 +124,14 @@ class FusedApiImplTest {
status = Status.UNAVAILABLE,
name = "Demo One",
package_name = "foundation.e.demoone"
- ), FusedApp(
+ ),
+ FusedApp(
_id = "112",
status = Status.INSTALLED,
name = "Demo Two",
package_name = "foundation.e.demotwo"
- ), FusedApp(
+ ),
+ FusedApp(
_id = "113",
status = Status.UNAVAILABLE,
name = "Demo Three",
@@ -156,12 +158,14 @@ class FusedApiImplTest {
status = Status.UNAVAILABLE,
name = "Demo One",
package_name = "foundation.e.demoone"
- ), FusedApp(
+ ),
+ FusedApp(
_id = "112",
status = Status.INSTALLED,
name = "Demo Two",
package_name = "foundation.e.demotwo"
- ), FusedApp(
+ ),
+ FusedApp(
_id = "113",
status = Status.UNAVAILABLE,
name = "Demo Three",
@@ -175,12 +179,14 @@ class FusedApiImplTest {
status = Status.UNAVAILABLE,
name = "Demo One",
package_name = "foundation.e.demoone"
- ), FusedApp(
+ ),
+ FusedApp(
_id = "112",
status = Status.UNAVAILABLE,
name = "Demo Two",
package_name = "foundation.e.demotwo"
- ), FusedApp(
+ ),
+ FusedApp(
_id = "113",
status = Status.UNAVAILABLE,
name = "Demo Three",
@@ -201,13 +207,15 @@ class FusedApiImplTest {
name = "Demo One",
package_name = "foundation.e.demoone",
latest_version_code = 123
- ), FusedApp(
+ ),
+ FusedApp(
_id = "112",
status = Status.INSTALLED,
name = "Demo Two",
package_name = "foundation.e.demotwo",
latest_version_code = 123
- ), FusedApp(
+ ),
+ FusedApp(
_id = "113",
status = Status.UNAVAILABLE,
name = "Demo Three",
@@ -242,13 +250,15 @@ class FusedApiImplTest {
name = "Demo One",
package_name = "foundation.e.demoone",
latest_version_code = 123
- ), FusedApp(
+ ),
+ FusedApp(
_id = "112",
status = Status.INSTALLED,
name = "Demo Two",
package_name = "foundation.e.demotwo",
latest_version_code = 123
- ), FusedApp(
+ ),
+ FusedApp(
_id = "113",
status = Status.UNAVAILABLE,
name = "Demo Three",
@@ -283,13 +293,15 @@ class FusedApiImplTest {
name = "Demo One",
package_name = "foundation.e.demoone",
latest_version_code = 123
- ), FusedApp(
+ ),
+ FusedApp(
_id = "112",
status = Status.INSTALLED,
name = "Demo Two",
package_name = "foundation.e.demotwo",
latest_version_code = 123
- ), FusedApp(
+ ),
+ FusedApp(
_id = "113",
status = Status.UNAVAILABLE,
name = "Demo Three",
@@ -324,13 +336,15 @@ class FusedApiImplTest {
name = "Demo One",
package_name = "foundation.e.demoone",
latest_version_code = 123
- ), FusedApp(
+ ),
+ FusedApp(
_id = "112",
status = Status.INSTALLED,
name = "Demo Two",
package_name = "foundation.e.demotwo",
latest_version_code = 123
- ), FusedApp(
+ ),
+ FusedApp(
_id = "113",
status = Status.UNAVAILABLE,
name = "Demo Three",
@@ -346,13 +360,15 @@ class FusedApiImplTest {
name = "Demo One",
package_name = "foundation.e.demoone",
latest_version_code = 123
- ), FusedApp(
+ ),
+ FusedApp(
_id = "112",
status = Status.UNAVAILABLE,
name = "Demo Two",
package_name = "foundation.e.demotwo",
latest_version_code = 123
- ), FusedApp(
+ ),
+ FusedApp(
_id = "113",
status = Status.UNAVAILABLE,
name = "Demo Three",
@@ -608,7 +624,7 @@ class FusedApiImplTest {
val categoryListResponse =
fusedAPIImpl.getCategoriesList(Category.Type.APPLICATION, AUTH_DATA)
-
+
assertEquals("getCategory", 3, categoryListResponse.first.size)
}
@@ -719,13 +735,15 @@ class FusedApiImplTest {
name = "Demo One",
package_name = "foundation.e.demoone",
latest_version_code = 123
- ), FusedApp(
+ ),
+ FusedApp(
_id = "112",
status = Status.UNAVAILABLE,
name = "Demo Two",
package_name = "foundation.e.demotwo",
latest_version_code = 123
- ), FusedApp(
+ ),
+ FusedApp(
_id = "113",
status = Status.UNAVAILABLE,
name = "Demo Three",
@@ -806,13 +824,15 @@ class FusedApiImplTest {
name = "Demo One",
package_name = "foundation.e.demoone",
latest_version_code = 123
- ), FusedApp(
+ ),
+ FusedApp(
_id = "112",
status = Status.UNAVAILABLE,
name = "Demo Two",
package_name = "foundation.e.demotwo",
latest_version_code = 123
- ), FusedApp(
+ ),
+ FusedApp(
_id = "113",
status = Status.UNAVAILABLE,
name = "Demo Three",