diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index e824e3facec432c93ac6752d3da2a8ffe9903d92..0000000000000000000000000000000000000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,85 +0,0 @@ -version: 2 - -jobs: - build: - working_directory: ~/code - docker: - - image: cimg/android:2022.12.1 - steps: - - checkout - - restore_cache: - key: jars-{{ checksum "build.gradle" }}-{{ checksum "presentation/build.gradle" }}-{{ checksum "data/build.gradle" }}-{{ checksum "domain/build.gradle" }} - - run: - name: Download dependencies - command: ./gradlew androidDependencies - - save_cache: - paths: - - ~/.gradle - key: jars-{{ checksum "build.gradle" }}-{{ checksum "presentation/build.gradle" }}-{{ checksum "data/build.gradle" }}-{{ checksum "domain/build.gradle" }} - - run: - name: Decrypt and unzip secrets - command: | - openssl aes-256-cbc -d -in secrets.tar.enc -md sha1 -k ${SECRETS_KEY} -iv ${SECRETS_IV} >> secrets.tar - tar xvf secrets.tar - - run: - name: Gradle build - command: ./gradlew :presentation:assembleWithAnalyticsRelease :presentation:bundleWithAnalyticsRelease - - run: - name: Flatten outputs - command: find presentation/build/outputs -mindepth 2 -type f -exec mv -i '{}' presentation/build/outputs/ ';' - - store_artifacts: - path: presentation/build/outputs - - persist_to_workspace: - root: presentation/build/outputs - paths: . - - test: - working_directory: ~/code - docker: - - image: cimg/android:2022.12.1 - steps: - - checkout - - restore_cache: - key: jars-{{ checksum "build.gradle" }}-{{ checksum "presentation/build.gradle" }}-{{ checksum "data/build.gradle" }}-{{ checksum "domain/build.gradle" }} - - run: - name: Download dependencies - command: ./gradlew androidDependencies - - save_cache: - paths: - - ~/.gradle - key: jars-{{ checksum "build.gradle" }}-{{ checksum "presentation/build.gradle" }}-{{ checksum "data/build.gradle" }}-{{ checksum "domain/build.gradle" }} - - store_test_results: - path: presentation/build/test-results - - deploy: - docker: - - image: cibuilds/github:0.10 - steps: - - attach_workspace: - at: presentation/build/outputs - - run: - name: "Publish Release on GitHub" - command: ghr -t ${GITHUB_TOKEN} -u ${CIRCLE_PROJECT_USERNAME} -r ${CIRCLE_PROJECT_REPONAME} -c ${CIRCLE_SHA1} ${CIRCLE_TAG} presentation/build/outputs/ - -workflows: - version: 2 - main: - jobs: - - build: - filters: - tags: - only: /^v.*/ - - test: - requires: - - build - filters: - tags: - only: /^v.*/ - - deploy: - requires: - - test - filters: - branches: - ignore: /.*/ - tags: - only: /^v.*/ diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md deleted file mode 100644 index 9db78b9a52d176ff3c8847e810290b1b4de18c1c..0000000000000000000000000000000000000000 --- a/.github/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,17 +0,0 @@ -### DESCRIPTION -A short description of the issue. -Example: Conversations aren't marked as read when they are opened from a notification. - -### STEPS -1. Steps -2. to -3. reproduce -4. the -5. issue. - -### EXPECTED -Describe the expected behaviour. - -### OBSERVATIONS -Describe what happens instead of the expected behaviour. - diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a8cbba534f501070ee9c0981b8a31887b735feca..e63b0eccc85dedd05661bbf3d332d2d815ee8a55 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,10 +1,11 @@ -image: "registry.gitlab.e.foundation/e/os/docker-android-apps-cicd:0-java11" +image: "registry.gitlab.e.foundation/e/os/docker-android-apps-cicd:latest" stages: - update-from-upstream - build before_script: + - export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 - export GRADLE_USER_HOME=$(pwd)/.gradle - chmod +x ./gradlew - ./gradlew clean @@ -78,4 +79,4 @@ update-default-branch: UPSTREAM_BRANCH: upstream/master UPSTREAM_DEFAULT_BRANCH: master UPSTREAM_URL: https://github.com/moezbhatti/qksms.git - TEMP_LATEST_TAG_BRANCH: latest_upstream_tag_branch \ No newline at end of file + TEMP_LATEST_TAG_BRANCH: latest_upstream_tag_branch diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index ae7f6a9424f9887d043ed4c79afc24d282dfeab9..0000000000000000000000000000000000000000 --- a/.travis.yml +++ /dev/null @@ -1,98 +0,0 @@ -language: android -jdk: oraclejdk8 -sudo: false - -notifications: - email: - on_success: change - on_failure: change - -env: - global: - - COMPILE_API_LEVEL=29 - - EMULATOR_API_LEVEL=24 # It seems emulator levels 25,26,27 from main repos have google_apis by default, and do not support armeabi-v7a. Check commit comment. - - EMULATOR_TAG=default # Possible values are default, google_apis, android-tv, android-wear, android-wear-cn - - EMULATOR_ABI=armeabi-v7a # Default is armeabi-v7a, possible options are: x86, x86_64, mips, arm64-v8a, armeabi-v7a. Note: check commit comment - - EMULATOR_NAME=qksms3 - - ANDROID_BUILD_TOOLS_VERSION=29.0.2 # Match build-tools version used in build.gradle - - EMULATOR="system-images;android-${EMULATOR_API_LEVEL};${EMULATOR_TAG};${EMULATOR_ABI}" # Used to install/create emulator - -android: - components: - - tools - - platform-tools - - tools - - extra - - # The build tools used in the project - - build-tools-${ANDROID_BUILD_TOOLS_VERSION} - - # The SDK used in the project - - android-${COMPILE_API_LEVEL} - - # For running the emulator in Travis - - android-${EMULATOR_API_LEVEL} - - sys-img-${EMULATOR_ABI}-android-${EMULATOR_API_LEVEL} - -# Set up Android-sdk and the emulator -before_install: - # Decrypt keystore and google-services.json - - openssl aes-256-cbc -K $encrypted_4d1d940e2c65_key -iv $encrypted_4d1d940e2c65_iv -in secrets.tar.enc -out secrets.tar -d - - tar xvf secrets.tar - - - echo 'count=0' > /home/travis/.android/repositories.cfg # Avoid warning - - ls -lar $HOME/**/* - - # List and delete unnecessary components to free space - - sdkmanager --list || true # Print out package list for debug purposes - - sdkmanager --uninstall "extras;google;google_play_services" - - yes | sdkmanager "tools" # Update tools - - yes | sdkmanager "platforms;android-${EMULATOR_API_LEVEL}" # Android platform required by emulator - - yes | sdkmanager "platforms;android-${COMPILE_API_LEVEL}" # Android platform required by compiler - - yes | sdkmanager "build-tools;${ANDROID_BUILD_TOOLS_VERSION}" # Android build tools - - yes | sdkmanager "${EMULATOR}" # Install emulator system image - - sdkmanager --list || true # Print out package list for debug purposes - -# Run the emulator -install: - # emulator instance - - echo no | android create avd --force -n ${EMULATOR_NAME} -k "${EMULATOR}" - # Run emulator in a subshell, this seems to solve the travis QT issue - - ( cd "$(dirname "$(which emulator)")" && ./emulator -avd ${EMULATOR_NAME} -verbose -show-kernel -selinux permissive -no-audio -no-window -no-boot-anim -wipe-data & ) - - android-wait-for-emulator - - adb shell settings put global window_animation_scale 0 & - - adb shell settings put global transition_animation_scale 0 & - - adb shell settings put global animator_duration_scale 0 & - - sleep 30 - - adb shell input keyevent 82 & - - adb devices - -# Gradle setup -before_script: - - cd ${TRAVIS_BUILD_DIR} - - ./gradlew --version - - ./gradlew clean - -# Build APK -script: - - | - ./gradlew :presentation:assembleWithAnalyticsRelease :presentation:bundleWithAnalyticsRelease assembleAndroidTest -PtestCoverageEnabled='true' - retval=$? - if [$retval -ne 0]; then - echo "error on assembling, exit code: "$retval - exit $retval - fi - -# Deploy APK -deploy: - provider: releases - skip_cleanup: true - overwrite: true - api_key: - secure: XF7V/I02gpyOzCAFXEFyrThXVUUnKjSaWQ8lppO50mVtdugimjWIPtHrcYASaJQf9INhqo0lamk+khPxtKxc1BSCp8o+c22UKcpczyjD4kK27a3zKfuNQWteBRjCH34vIGnrRFSHSWYLIgeuoIK3q5Lq4IBK/Od3mfpRaDt1ER+IqMzR3L205x1H8dW3MVuxXgdnq3jHlRpq86oOe293+dnblVCtWUvAzwhZPnnbBc4JUaNomMI7dLJ/pAigByCoHHmG9pc2Cky1yyWVAnTZFAlf2PbzPDLRRnXmHuYKfHxiZgd/l8JTiZdhky9cXgFoSxvJyDABRqqLxVNfXt2ZwgdtiulZml8RB1FB0L37qL72mxWgi6y9IbQgt/FG20K2QpSBglk0bCGLS+h5Yz3kV4fhsBY7llpWGw14BvlAx9sUfl3Ej+IUsWoJgA00TFNGDG8sMyOFoCQVz/sB4Dv4h+JfynJZcmm8okcfYrWBHOoHY7cH3chBWp/2A736f2A/aqnBd6z8a03toe2ILC9eSOiIhrVxPyqLmEKBD1rCduVFNteqGwm9G9YwKpvFibTqu0gqEtfF7cmuMH6M5PYExI5EzoewZTYmgp02+lBuFAEMvycVvXcu8VfeeT6cgeLlmz2hsbo93UfoSQyP+gSojMOOkVUsl6mIp1STLiJ5IRY= - file: - - /home/travis/build/moezbhatti/qksms/presentation/build/outputs/bundle/withAnalyticsRelease/presentation.aab - - /home/travis/build/moezbhatti/qksms/presentation/build/outputs/apk/withAnalytics/release/presentation-withAnalytics-release.apk - on: - repo: moezbhatti/qksms - tags: true \ No newline at end of file diff --git a/build.gradle b/build.gradle index c04f17cdc57bb19e5ddb799396cb37e642e2af10..9ad420d8d1d427a2e504635c38f702aaa3330e1b 100644 --- a/build.gradle +++ b/build.gradle @@ -15,7 +15,7 @@ buildscript { ext.coroutines_version = '1.4.3' ext.dagger_version = "2.16" ext.espresso_version = '3.1.0-alpha3' - ext.exoplayer_version = "2.8.1" + ext.exoplayer_version = "2.8.3" ext.glide_version = "4.8.0" ext.junit_version = '4.12' ext.kotlin_version = '1.7.20' @@ -35,9 +35,10 @@ buildscript { ext.timber_version = '4.5.1' repositories { - maven { url 'https://maven.google.com' } - jcenter() google() + jcenter() + mavenCentral() + maven { url 'https://maven.google.com' } } dependencies { @@ -53,15 +54,34 @@ allprojects { repositories { google() jcenter() + mavenCentral() maven { url "https://jitpack.io" } maven { url 'https://gitlab.e.foundation/api/v4/groups/9/-/packages/maven'} - maven { url 'https://maven.fabric.io/public' } - maven { url 'https://maven.google.com' } maven { name 'glide-snapshot' url 'https://oss.sonatype.org/content/repositories/snapshots' } - mavenCentral() + // Liferay CDN repo for legacy deps + maven { + url 'https://repository-cdn.liferay.com/nexus/content/repositories/public/' + content { + includeGroup 'com.github.pengrad' + includeGroup 'com.google.android.exoplayer' + includeGroup 'io.realm' + includeGroup 'com.google.android' + } + } + // Legacy jcenter + maven { + url 'https://jcenter.bintray.com' + content { + includeGroup 'com.google.android' + includeGroup 'com.callcontrol' + includeGroup 'io.michaelrocks' + includeGroup 'com.klinkerapps' + includeGroup 'com.squareup.okhttp' + } + } } } diff --git a/data/build.gradle b/data/build.gradle index 73170a26ee7825825d9fca9e7ac497026463c6dd..37de82ef7eb5ab308d7f310421f3b3432857ce55 100644 --- a/data/build.gradle +++ b/data/build.gradle @@ -84,12 +84,12 @@ dependencies { implementation "org.jetbrains.kotlinx:kotlinx-coroutines-rx2:$coroutines_version" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-reactive:$coroutines_version" - implementation 'com.callcontrol:datashare:1.2.0' + implementation 'com.callcontrol:datashare:1.3.0' implementation "com.f2prateek.rx.preferences2:rx-preferences:$rx_preferences_version" implementation "com.jakewharton.timber:timber:$timber_version" implementation "com.squareup.moshi:moshi:$moshi_version" implementation "com.squareup.okhttp3:okhttp:$okhttp3_version" - implementation 'io.michaelrocks:libphonenumber-android:8.10.16' + implementation 'io.michaelrocks:libphonenumber-android:8.13.35' implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" implementation project(":android-smsmms") implementation project(':common') diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/blocking/numbers/BlockedNumbersPresenter.kt b/presentation/src/main/java/com/moez/QKSMS/feature/blocking/numbers/BlockedNumbersPresenter.kt index f9c4decd83bc17d3162d4350339918b489b93760..5720150ef3868fe4714b64e7b23e27f8c77dd92e 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/blocking/numbers/BlockedNumbersPresenter.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/blocking/numbers/BlockedNumbersPresenter.kt @@ -24,7 +24,9 @@ import com.moez.QKSMS.repository.BlockingRepository import com.moez.QKSMS.repository.ConversationRepository import com.uber.autodispose.android.lifecycle.scope import com.uber.autodispose.autoDisposable +import io.reactivex.Completable import io.reactivex.schedulers.Schedulers +import timber.log.Timber import javax.inject.Inject class BlockedNumbersPresenter @Inject constructor( @@ -32,31 +34,36 @@ class BlockedNumbersPresenter @Inject constructor( private val conversationRepo: ConversationRepository, private val markUnblocked: MarkUnblocked ) : QkPresenter( - BlockedNumbersState(numbers = blockingRepo.getBlockedNumbers()) + BlockedNumbersState(numbers = blockingRepo.getBlockedNumbers()) ) { override fun bindIntents(view: BlockedNumbersView) { super.bindIntents(view) view.unblockAddress() - .doOnNext { id -> + .flatMapCompletable { id -> + Completable.fromAction { blockingRepo.getBlockedNumber(id)?.address - ?.let(conversationRepo::getThreadId) - ?.let { threadId -> markUnblocked.execute(listOf(threadId)) } + ?.let(conversationRepo::getThreadId) + ?.let { threadId -> markUnblocked.execute(listOf(threadId)) } + blockingRepo.unblockNumber(id) } - .doOnNext(blockingRepo::unblockNumber) - .subscribeOn(Schedulers.io()) - .autoDisposable(view.scope()) - .subscribe() + .subscribeOn(Schedulers.io()) + } + .autoDisposable(view.scope()) + .subscribe({ }, Timber::w) view.addAddress() - .autoDisposable(view.scope()) - .subscribe { view.showAddDialog() } + .autoDisposable(view.scope()) + .subscribe { view.showAddDialog() } view.saveAddress() - .subscribeOn(Schedulers.io()) - .autoDisposable(view.scope()) - .subscribe { address -> blockingRepo.blockNumber(address) } + .flatMapCompletable { address -> + Completable.fromAction { blockingRepo.blockNumber(address) } + .subscribeOn(Schedulers.io()) + } + .autoDisposable(view.scope()) + .subscribe({ }, Timber::w) } }