From ddd7927c4fcb7aed538e51c7cecd9223ce39fdd4 Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Thu, 31 Mar 2022 15:07:59 +0200 Subject: [PATCH] Fix ktlint setup --- .github/workflows/android.yml | 128 +++++++--------- Habitica/build.gradle | 36 +++-- Habitica/libs/LeonidsLib-1.3.2.jar | Bin 0 -> 22721 bytes .../ui/activities/IntroActivityTest.kt | 6 +- .../habitica/ui/fragments/FragmentTestCase.kt | 6 +- .../ui/fragments/PartyDetailFragmentTest.kt | 8 +- .../ui/fragments/StatsFragmentTest.kt | 25 ++-- .../purchases/GemsPurchaseFragmentTest.kt | 30 +--- .../purchases/SubscriptionFragmentTest.kt | 23 +-- .../habitica/HabiticaBaseApplication.kt | 4 +- .../android/habitica/api/ApiService.kt | 36 ++++- .../habitica/api/GSonFactoryCreator.java | 3 +- .../habitica/components/AppComponent.java | 4 +- .../habitica/components/UserComponent.java | 8 +- .../android/habitica/data/ApiClient.kt | 28 +++- .../habitica/data/ContentRepository.kt | 2 +- .../habitica/data/InventoryRepository.kt | 16 +- .../android/habitica/data/SocialRepository.kt | 7 +- .../android/habitica/data/TaskRepository.kt | 2 +- .../data/implementation/ApiClientImpl.kt | 30 +++- .../implementation/ContentRepositoryImpl.kt | 2 +- .../implementation/InventoryRepositoryImpl.kt | 16 +- .../implementation/SocialRepositoryImpl.kt | 9 +- .../data/implementation/TaskRepositoryImpl.kt | 10 +- .../data/implementation/UserRepositoryImpl.kt | 6 +- .../data/local/InventoryLocalRepository.kt | 12 +- .../data/local/UserLocalRepository.kt | 6 +- .../RealmChallengeLocalRepository.kt | 1 - .../RealmCustomizationLocalRepository.kt | 2 +- .../RealmInventoryLocalRepository.kt | 21 ++- .../RealmSocialLocalRepository.kt | 13 +- .../RealmTaskLocalRepository.kt | 7 +- .../RealmUserLocalRepository.kt | 7 +- .../android/habitica/executors/UIThread.java | 2 +- .../habitica/extensions/Context-Extensions.kt | 2 +- .../habitica/extensions/Date-Extensions.kt | 8 +- .../extensions/PendingIntent-Extensions.kt | 3 +- .../habitica/helpers/AmplitudeManager.kt | 1 - .../habitica/helpers/AppConfigManager.kt | 1 - .../habitica/helpers/AprilFoolsHandler.kt | 2 +- .../android/habitica/helpers/DeviceName.kt | 8 +- .../habitica/helpers/HealthFormatter.kt | 2 +- .../android/habitica/helpers/KeyHelper.kt | 23 ++- .../habitica/helpers/LanguageHelper.kt | 2 +- .../helpers/MainNavigationController.kt | 2 +- .../habitica/helpers/NotificationsManager.kt | 8 +- .../habitica/helpers/PurchaseHandler.kt | 46 +++--- .../helpers/SignInWithAppleService.kt | 2 +- .../habitica/helpers/TaskAlarmManager.kt | 3 +- .../habitica/helpers/TaskFilterHelper.kt | 1 - .../habitica/helpers/UserStatComputer.kt | 1 - .../GroupActivityNotification.kt | 4 +- .../HabiticaLocalNotification.kt | 2 +- .../notifications/PushNotificationManager.kt | 1 - .../habitica/interactors/FeedPetUseCase.kt | 2 +- .../habitica/interactors/HatchPetUseCase.kt | 2 +- .../habitica/interactors/NotifyUserUseCase.kt | 1 - .../interactors/ScoreTaskLocallyInteractor.kt | 1 - .../android/habitica/models/ContentResult.kt | 10 +- .../android/habitica/models/Notification.kt | 15 +- .../habitrpg/android/habitica/models/Tag.kt | 2 - .../android/habitica/models/TutorialStep.kt | 2 +- .../android/habitica/models/WorldState.kt | 1 - .../habitica/models/WorldStateEvent.kt | 2 +- .../models/inventory/Customization.kt | 2 +- .../android/habitica/models/inventory/Egg.kt | 1 - .../habitica/models/inventory/Equipment.kt | 1 - .../android/habitica/models/inventory/Food.kt | 1 - .../models/inventory/HatchingPotion.kt | 1 - .../android/habitica/models/inventory/Item.kt | 2 +- .../android/habitica/models/members/Member.kt | 10 +- .../FallExtraGemsHabiticaPromotion.kt | 5 +- .../GiftOneGetOneHabiticaPromotion.kt | 3 +- .../models/promotions/HabiticaPromotion.kt | 10 +- .../SpookyExtraGemsHabiticaPromotion.kt | 5 +- .../models/promotions/Survey2021Promotion.kt | 2 +- .../habitica/models/social/Challenge.kt | 3 +- .../models/social/InboxConversation.kt | 2 +- .../habitica/models/tasks/Attribute.kt | 2 +- .../habitica/models/tasks/ChecklistItem.kt | 2 +- .../habitica/models/tasks/Frequency.kt | 2 +- .../android/habitica/models/tasks/Task.kt | 8 +- .../habitica/models/tasks/TaskGroupPlan.kt | 2 +- .../android/habitica/models/tasks/TaskType.kt | 2 +- .../models/user/AdditionalSubscriptionInfo.kt | 4 +- .../models/user/AuthenticationTimestamps.kt | 2 +- .../android/habitica/models/user/Items.kt | 10 +- .../habitica/models/user/Preferences.kt | 1 - .../habitica/models/user/SubscriptionPlan.kt | 2 +- .../android/habitica/models/user/User.kt | 9 +- .../android/habitica/modules/ApiModule.kt | 10 +- .../android/habitica/modules/AppModule.kt | 8 +- .../habitica/modules/RepositoryModule.kt | 6 +- .../habitica/modules/UserRepositoryModule.kt | 78 +++++----- .../android/habitica/prefs/TimePreference.kt | 6 +- .../LocalNotificationActionReceiver.kt | 1 - .../receivers/NotificationPublisher.kt | 4 +- .../habitica/receivers/TaskReceiver.kt | 7 +- .../android/habitica/ui/AvatarView.kt | 10 +- .../habitica/ui/AvatarWithBarsViewModel.kt | 2 +- .../ui/activities/AddTaskWidgetActivity.kt | 1 - .../ui/activities/AdventureGuideActivity.kt | 2 - .../habitica/ui/activities/BaseActivity.kt | 21 +-- .../ui/activities/ChallengeFormActivity.kt | 10 +- .../ui/activities/ClassSelectionActivity.kt | 8 +- .../activities/FixCharacterValuesActivity.kt | 141 +++++++++--------- .../ui/activities/FullProfileActivity.kt | 13 +- .../ui/activities/GemPurchaseActivity.kt | 5 - .../ui/activities/GiftGemsActivity.kt | 2 - .../ui/activities/GiftSubscriptionActivity.kt | 4 - .../ui/activities/GroupInviteActivity.kt | 1 - .../ui/activities/GuidelinesActivity.kt | 6 +- .../habitica/ui/activities/LoginActivity.kt | 25 ++-- .../habitica/ui/activities/MainActivity.kt | 42 +++--- .../ui/activities/NotificationsActivity.kt | 16 +- .../habitica/ui/activities/PrefsActivity.kt | 5 +- .../ui/activities/PurchaseActivity.kt | 2 +- .../ui/activities/ReportMessageActivity.kt | 3 +- .../habitica/ui/activities/SetupActivity.kt | 4 +- .../ui/activities/SkillMemberActivity.kt | 1 - .../ui/activities/TaskFormActivity.kt | 42 +++--- .../ui/activities/VerifyUsernameActivity.kt | 2 - .../ui/adapter/BaseRecyclerViewAdapter.kt | 8 +- ...stomizationEquipmentRecyclerViewAdapter.kt | 1 - .../CustomizationRecyclerViewAdapter.kt | 2 +- .../adapter/SkillTasksRecyclerViewAdapter.kt | 2 +- .../ui/adapter/SkillsRecyclerViewAdapter.kt | 2 +- .../adapter/inventory/ItemRecyclerAdapter.kt | 15 +- .../inventory/MountDetailRecyclerAdapter.kt | 9 +- .../inventory/PetDetailRecyclerAdapter.kt | 19 ++- .../inventory/StableRecyclerAdapter.kt | 11 +- .../ui/adapter/setup/TaskSetupAdapter.kt | 1 - .../adapter/social/ChatRecyclerViewAdapter.kt | 4 +- .../ui/adapter/social/GuildListAdapter.kt | 2 +- .../ChallengeTasksRecyclerViewAdapter.kt | 6 +- .../ChallengesFilterRecyclerViewAdapter.kt | 1 - .../tasks/BaseTasksRecyclerViewAdapter.kt | 1 - .../tasks/DailiesRecyclerViewHolder.kt | 1 - .../RealmBaseTasksRecyclerViewAdapter.kt | 28 ++-- .../adapter/tasks/TodosRecyclerViewAdapter.kt | 1 - .../ui/fragments/AchievementsFragment.kt | 9 +- .../ui/fragments/BaseDialogFragment.kt | 2 - .../habitica/ui/fragments/BaseFragment.kt | 1 - .../habitica/ui/fragments/BaseMainFragment.kt | 10 +- .../ui/fragments/NavigationDrawerFragment.kt | 35 +++-- .../habitica/ui/fragments/StatsFragment.kt | 1 - .../AvatarCustomizationFragment.kt | 1 - .../equipment/EquipmentOverviewFragment.kt | 6 +- .../inventory/items/ItemDialogFragment.kt | 36 +++-- .../inventory/items/ItemRecyclerFragment.kt | 23 ++- .../fragments/inventory/shops/ShopFragment.kt | 2 - .../stable/MountDetailRecyclerFragment.kt | 1 - .../stable/PetDetailRecyclerFragment.kt | 20 ++- .../stable/StableRecyclerFragment.kt | 5 +- .../preferences/AccountPreferenceFragment.kt | 25 ++-- .../DayStartPreferenceDialogFragment.kt | 3 +- .../preferences/PreferencesFragment.kt | 9 +- .../TimePreferenceDialogFragment.kt | 3 +- .../purchases/GemsPurchaseFragment.kt | 13 +- .../purchases/GiftBalanceGemsFragment.kt | 2 +- .../purchases/GiftPurchaseGemsFragment.kt | 1 - .../purchases/SubscriptionFragment.kt | 2 - .../ui/fragments/setup/AvatarSetupFragment.kt | 2 +- .../ui/fragments/setup/TaskSetupFragment.kt | 2 +- .../ui/fragments/skills/SkillsFragment.kt | 26 ++-- .../social/InboxMessageListFragment.kt | 140 ++++++++--------- .../fragments/social/InboxOverviewFragment.kt | 7 +- .../ui/fragments/social/TavernFragment.kt | 7 +- .../challenges/ChallengeDetailFragment.kt | 9 +- .../challenges/ChallengesOverviewFragment.kt | 7 +- .../social/guilds/GuildDetailFragment.kt | 1 - .../fragments/social/guilds/GuildFragment.kt | 7 +- .../social/guilds/GuildListFragment.kt | 4 +- .../social/guilds/GuildOverviewFragment.kt | 7 +- .../social/party/NoPartyFragmentFragment.kt | 1 - .../fragments/social/party/PartyFragment.kt | 8 +- .../social/party/PartyInviteFragment.kt | 1 - .../ui/fragments/support/BugFixFragment.kt | 26 ++-- .../tasks/RewardsRecyclerviewFragment.kt | 1 - .../tasks/TaskRecyclerViewFragment.kt | 28 ++-- .../ui/fragments/tasks/TasksFragment.kt | 16 +- .../ui/fragments/tasks/TeamBoardFragment.kt | 2 - .../ui/helpers/AutocompleteAdapter.kt | 2 +- .../habitica/ui/helpers/DataBindingUtils.kt | 4 +- .../ui/helpers/SafeDefaultItemAnimator.kt | 1 - .../habitica/ui/helpers/ToolbarColorHelper.kt | 1 - .../habitica/ui/menu/BottomSheetMenu.kt | 2 - .../ui/viewHolders/MountViewHolder.kt | 1 - .../habitica/ui/viewHolders/PetViewHolder.kt | 7 +- .../ui/viewHolders/SectionViewHolder.kt | 7 +- .../viewHolders/tasks/BaseTaskViewHolder.kt | 10 +- .../tasks/ChecklistedViewHolder.kt | 8 +- .../ui/viewHolders/tasks/DailyViewHolder.kt | 3 +- .../ui/viewmodels/AuthenticationViewModel.kt | 25 ++-- .../habitica/ui/viewmodels/BaseViewModel.kt | 9 +- .../habitica/ui/viewmodels/GroupViewModel.kt | 30 ++-- .../ui/viewmodels/MainActivityViewModel.kt | 18 +-- .../ui/viewmodels/MainUserViewModel.kt | 18 +-- .../ui/viewmodels/NotificationsViewModel.kt | 16 +- .../equipment/EquipmentOverviewViewModel.kt | 10 +- .../habitica/ui/views/ExtraLabelPreference.kt | 2 +- .../habitica/ui/views/HabiticaIcons.java | 21 ++- .../ui/views/HabiticaIconsHelper.java | 1 + .../habitica/ui/views/HabiticaSnackbar.kt | 6 +- .../habitica/ui/views/RoundedCornerLayout.kt | 8 +- .../android/habitica/ui/views/Typewriter.kt | 6 +- .../habitica/ui/views/ValidatingEditText.kt | 8 +- .../ui/views/dialogs/HabiticaAlertDialog.kt | 13 +- .../ui/views/dialogs/PetSuggestHatchDialog.kt | 5 +- .../InsufficientGemsDialog.kt | 1 - .../ui/views/login/LoginBackgroundView.kt | 2 +- .../habitica/ui/views/shops/PurchaseDialog.kt | 11 +- .../habitica/ui/views/social/QuestMenuView.kt | 11 +- .../subscriptions/SubscriptionDetailsView.kt | 2 +- .../ui/views/tasks/TaskFilterDialog.kt | 10 +- .../views/tasks/form/ChecklistItemFormView.kt | 5 +- .../ui/views/tasks/form/ReminderContainer.kt | 5 +- .../views/tasks/form/ReminderItemFormView.kt | 5 +- .../tasks/form/TaskSchedulingControls.kt | 12 +- .../views/yesterdailies/YesterdailyDialog.kt | 3 +- .../habitica/utils/ContentDeserializer.kt | 10 +- .../utils/OwnedItemListDeserializer.kt | 2 +- .../utils/QuestDropItemsListSerialization.kt | 1 - .../habitica/utils/SkillDeserializer.kt | 1 - .../utils/SocialAuthenticationDeserializer.kt | 1 - .../habitica/utils/TaskListDeserializer.kt | 2 - .../android/habitica/utils/TaskSerializer.kt | 1 - .../habitica/utils/TaskTagDeserializer.kt | 1 - .../habitica/utils/UserDeserializer.kt | 1 - .../widget/AvatarStatsWidgetProvider.kt | 2 - .../habitica/widget/BaseWidgetProvider.kt | 1 - .../habitica/widget/DailiesListFactory.kt | 1 - .../widget/HabitButtonWidgetService.kt | 1 - .../habitica/widget/TaskListFactory.kt | 1 - .../habitica/widget/TodoListFactory.kt | 1 - .../implementation/TaskRepositoryImplTest.kt | 1 + .../habitica/helpers/NumberAbbreviatorTest.kt | 2 + build.gradle | 4 +- 238 files changed, 1264 insertions(+), 963 deletions(-) create mode 100644 Habitica/libs/LeonidsLib-1.3.2.jar diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index ef4ea4c3e..b2bb1eb9c 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -2,14 +2,12 @@ name: Android CI on: push: - branches: [ develop ] + branches: [ develop, release ] pull_request: - branches: [ develop ] jobs: build: runs-on: ubuntu-latest - steps: - uses: actions/checkout@v2 - name: set up JDK 11 @@ -18,29 +16,17 @@ jobs: java-version: '11' distribution: 'adopt' cache: gradle + - name: Prepare + run: ./.github/actions/prepare-run + - name: Validate Gradle wrapper + uses: gradle/wrapper-validation-action + - name: Run with Gradle + uses: gradle/gradle-build-action + with: + arguments: assembleProdDebug -PdisablePreDex - - name: Grant execute permission for gradlew - run: chmod +x gradlew - - name: copy properties file - uses: canastro/copy-file-action@master - with: - source: "habitica.properties.example" - target: "habitica.properties" - - name: copy resources file - uses: canastro/copy-file-action@master - with: - source: "habitica.resources.example" - target: "habitica.resources" - - name: copy google services file - uses: canastro/copy-file-action@master - with: - source: "Habitica/google-services.json.example" - target: "Habitica/google-services.json" - - name: Build with Gradle - run: ./gradlew assembleProdDebug -PdisablePreDex - test: + unit-test: runs-on: ubuntu-latest - steps: - uses: actions/checkout@v2 - name: set up JDK 11 @@ -49,28 +35,36 @@ jobs: java-version: '11' distribution: 'adopt' cache: gradle - - name: Grant execute permission for gradlew - run: chmod +x gradlew - - name: copy properties file - uses: canastro/copy-file-action@master + - name: Prepare + run: ./.github/actions/prepare-run + - name: Validate Gradle wrapper + uses: gradle/wrapper-validation-action + - name: Run with Gradle + uses: gradle/gradle-build-action with: - source: "habitica.properties.example" - target: "habitica.properties" - - name: copy resources file - uses: canastro/copy-file-action@master + arguments: testProdDebugUnitTest + + ui-test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: set up JDK 11 + uses: actions/setup-java@v2 with: - source: "habitica.resources.example" - target: "habitica.resources" - - name: copy google services file - uses: canastro/copy-file-action@master + java-version: '11' + distribution: 'adopt' + cache: gradle + - name: Prepare + run: ./.github/actions/prepare-run + - name: Validate Gradle wrapper + uses: gradle/wrapper-validation-action + - name: Run with Gradle + uses: gradle/gradle-build-action with: - source: "Habitica/google-services.json.example" - target: "Habitica/google-services.json" - - name: Run Tests - run: ./gradlew testProdDebugUnitTest + arguments: testProdDebugUnitTest + lint: runs-on: ubuntu-latest - steps: - uses: actions/checkout@v2 - name: set up JDK 11 @@ -79,28 +73,17 @@ jobs: java-version: '11' distribution: 'adopt' cache: gradle - - name: copy properties file - uses: canastro/copy-file-action@master + - name: Prepare + run: ./.github/actions/prepare-run + - name: Validate Gradle wrapper + uses: gradle/wrapper-validation-action + - name: Run with Gradle + uses: gradle/gradle-build-action with: - source: "habitica.properties.example" - target: "habitica.properties" - - name: copy resources file - uses: canastro/copy-file-action@master - with: - source: "habitica.resources.example" - target: "habitica.resources" - - name: copy google services file - uses: canastro/copy-file-action@master - with: - source: "Habitica/google-services.json.example" - target: "Habitica/google-services.json" - - name: Grant execute permission for gradlew - run: chmod +x gradlew - - name: Run Ktlint - run: ./gradlew ktlint + arguments: ktlint + detekt: runs-on: ubuntu-latest - steps: - uses: actions/checkout@v2 - name: set up JDK 11 @@ -109,25 +92,14 @@ jobs: java-version: '11' distribution: 'adopt' cache: gradle - - name: copy properties file - uses: canastro/copy-file-action@master + - name: Prepare + run: ./.github/actions/prepare-run + - name: Validate Gradle wrapper + uses: gradle/wrapper-validation-action + - name: Run with Gradle + uses: gradle/gradle-build-action with: - source: "habitica.properties.example" - target: "habitica.properties" - - name: copy resources file - uses: canastro/copy-file-action@master - with: - source: "habitica.resources.example" - target: "habitica.resources" - - name: copy google services file - uses: canastro/copy-file-action@master - with: - source: "Habitica/google-services.json.example" - target: "Habitica/google-services.json" - - name: Grant execute permission for gradlew - run: chmod +x gradlew - - name: Run detekt - run: ./gradlew detekt + arguments: detekt - name: Upload SARIF to Github using the upload-sarif action uses: github/codeql-action/upload-sarif@v1 if: ${{ always() }} diff --git a/Habitica/build.gradle b/Habitica/build.gradle index 68d6e776c..fc35a4a2d 100644 --- a/Habitica/build.gradle +++ b/Habitica/build.gradle @@ -49,7 +49,6 @@ dependencies { implementation 'com.google.dagger:dagger:2.40.5' kapt 'com.google.dagger:dagger-compiler:2.40.5' compileOnly 'javax.annotation:javax.annotation-api:1.3.2' - compileOnly 'com.github.pengrad:jdk9-deps:1.0' //App Compatibility and Material Design implementation 'androidx.appcompat:appcompat:1.4.1' implementation 'com.google.android.material:material:1.5.0' @@ -66,7 +65,7 @@ dependencies { // IAP Handling / Verification - implementation "com.android.billingclient:billing-ktx:4.0.0" + implementation "com.android.billingclient:billing-ktx:4.1.0" //Facebook implementation('com.facebook.android:facebook-android-sdk:12.2.0') { transitive = true @@ -96,17 +95,18 @@ dependencies { androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' androidTestImplementation 'androidx.test:runner:1.4.0' androidTestImplementation 'androidx.test:rules:1.4.0' + debugImplementation 'androidx.fragment:fragment-testing:1.4.1' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation "io.mockk:mockk-android:1.12.2" + androidTestUtil("androidx.test:orchestrator:1.4.1") implementation 'androidx.activity:activity-compose:1.4.0' - implementation 'androidx.compose.material:material:1.0.5' - implementation 'androidx.compose.animation:animation:1.0.5' - implementation 'androidx.compose.ui:ui-tooling:1.0.5' + implementation 'androidx.compose.material:material:1.1.1' + implementation 'androidx.compose.animation:animation:1.1.1' + implementation 'androidx.compose.ui:ui-tooling:1.1.1' implementation 'androidx.lifecycle:lifecycle-viewmodel-compose:2.4.1' implementation "com.google.accompanist:accompanist-appcompat-theme:0.16.0" - //Leak Detection debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.8' //Push Notifications @@ -125,9 +125,8 @@ dependencies { implementation "androidx.lifecycle:lifecycle-common-java8:2.4.1" implementation 'androidx.navigation:navigation-fragment-ktx:2.4.1' implementation 'androidx.navigation:navigation-ui-ktx:2.4.1' - implementation 'com.plattysoft.leonids:LeonidsLib:1.3.2' implementation "androidx.fragment:fragment-ktx:1.4.1" - implementation "androidx.paging:paging-runtime-ktx:3.1.0" + implementation "androidx.paging:paging-runtime-ktx:3.1.1" implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.0' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.0' @@ -135,7 +134,7 @@ dependencies { implementation project(':shared') - ktlint("com.pinterest:ktlint:0.43.2") { + ktlint("com.pinterest:ktlint:0.45.0") { attributes { attribute(Bundling.BUNDLING_ATTRIBUTE, getObjects().named(Bundling, Bundling.EXTERNAL)) } @@ -165,6 +164,7 @@ android { targetSdkVersion 32 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + testInstrumentationRunnerArguments clearPackageData: 'true' } buildFeatures { @@ -198,7 +198,6 @@ android { // Disable fabric build ID generation for debug builds ext.enableCrashlytics = false ext.alwaysUpdateBuildId = false - testCoverageEnabled = true resValue "string", "content_provider", "com.habitrpg.android.habitica.fileprovider" resValue "string", "app_name", "Habitica Debug" } @@ -251,12 +250,6 @@ android { res.srcDirs = ['res'] assets.srcDirs = ['assets'] } - /*robolectric { - manifest.srcFile 'AndroidManifestTesting.xml' - java.srcDir file('src/test/java/') - res.srcDirs = ['res'] - }*/ - //instrumentTest.setRoot('tests') debugIAP { java.srcDirs = ['src/debug/java'] } release { java.srcDirs = ['src/release/java'] } } @@ -292,6 +285,9 @@ android.testOptions { useJUnitPlatform() unitTests.returnDefaultValues = true } + unitTests.returnDefaultValues = true + + execution 'ANDROIDX_TEST_ORCHESTRATOR' } Properties props = new Properties() @@ -315,7 +311,7 @@ if (propFile.canRead()) { } // Add Habitica Properties to buildConfigField -final File HRPG_PROPS_FILE = new File('habitica.properties') +final File HRPG_PROPS_FILE = new File(projectDir.absolutePath + '/../habitica.properties') if (HRPG_PROPS_FILE.canRead()) { Properties HRPG_PROPS = new Properties() HRPG_PROPS.load(new FileInputStream(HRPG_PROPS_FILE)) @@ -334,7 +330,7 @@ if (HRPG_PROPS_FILE.canRead()) { } // Add Habitica Resources to resources -final File HRPG_RES_FILE = new File('habitica.resources') +final File HRPG_RES_FILE = new File(projectDir.absolutePath + '/../habitica.resources') if (HRPG_RES_FILE.canRead()) { Properties HRPG_RES = new Properties() HRPG_RES.load(new FileInputStream(HRPG_RES_FILE)) @@ -404,6 +400,7 @@ task jacocoTestReport(type: JacocoReport, dependsOn: 'testProdDebugUnitTest') { task ktlint(type: JavaExec, group: "verification") { description = "Check Kotlin code style." classpath = configurations.ktlint + mainClass.set("com.pinterest.ktlint.Main") args "--disabled_rules=no-wildcard-imports", "--reporter=plain?group_by_file", "src/**/*.kt" // to generate report in checkstyle format prepend following args: // "--reporter=plain", "--reporter=checkstyle,output=${buildDir}/ktlint.xml" @@ -416,5 +413,6 @@ check.dependsOn ktlint task ktlintFormat(type: JavaExec, group: "formatting") { description = "Fix Kotlin code style deviations." classpath = configurations.ktlint - args "--disabled_rules=no-wildcard-imports", "-F", "src/**/*.kt" + mainClass.set("com.pinterest.ktlint.Main") + args "-F", "src/**/*.kt" } diff --git a/Habitica/libs/LeonidsLib-1.3.2.jar b/Habitica/libs/LeonidsLib-1.3.2.jar new file mode 100644 index 0000000000000000000000000000000000000000..2713755b70976231cfa06565cf8b06d066595c41 GIT binary patch literal 22721 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

K6d;(T0!-QH5M?d1yy!94+wbe41f= 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 GxBmeoLp6{9 literal 0 HcmV?d00001 diff --git a/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/activities/IntroActivityTest.kt b/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/activities/IntroActivityTest.kt index fc546752b..6a621fabe 100644 --- a/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/activities/IntroActivityTest.kt +++ b/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/activities/IntroActivityTest.kt @@ -10,14 +10,14 @@ import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith -class IntroActivityScreen: Screen() { +class IntroActivityScreen : Screen() { val skipButton = KButton { withId(R.id.skipButton) } - val finishButton = KButton { withId(R.id.finishButton )} + val finishButton = KButton { withId(R.id.finishButton) } } @LargeTest @RunWith(AndroidJUnit4::class) -class IntroActivityTest: TestCase() { +class IntroActivityTest : TestCase() { @Rule @JvmField diff --git a/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/fragments/FragmentTestCase.kt b/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/fragments/FragmentTestCase.kt index 3497b68f1..9784c3f2d 100644 --- a/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/fragments/FragmentTestCase.kt +++ b/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/fragments/FragmentTestCase.kt @@ -7,10 +7,8 @@ import com.habitrpg.android.habitica.data.SocialRepository import com.habitrpg.android.habitica.data.TutorialRepository import com.habitrpg.android.habitica.data.UserRepository import com.habitrpg.android.habitica.helpers.AppConfigManager -import com.habitrpg.android.habitica.models.Skill import com.habitrpg.android.habitica.models.user.Stats import com.habitrpg.android.habitica.models.user.User -import com.habitrpg.android.habitica.ui.fragments.social.party.PartyDetailFragment import com.kaspersky.kaspresso.testcases.api.testcase.TestCase import io.github.kakaocup.kakao.screen.Screen import io.mockk.clearAllMocks @@ -21,7 +19,7 @@ import io.reactivex.rxjava3.core.Flowable import io.reactivex.rxjava3.subjects.PublishSubject import org.junit.Before -abstract class FragmentTestCase, VB: ViewBinding, S: Screen>: TestCase() { +abstract class FragmentTestCase, VB : ViewBinding, S : Screen> : TestCase() { lateinit var scenario: FragmentScenario lateinit var fragment: F @@ -50,4 +48,4 @@ abstract class FragmentTestCase, VB: ViewBinding, S: Screen< every { userRepository.getUser() } returns userEvents makeFragment() } -} \ No newline at end of file +} diff --git a/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/fragments/PartyDetailFragmentTest.kt b/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/fragments/PartyDetailFragmentTest.kt index c4da4b5aa..53507edbe 100644 --- a/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/fragments/PartyDetailFragmentTest.kt +++ b/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/fragments/PartyDetailFragmentTest.kt @@ -20,7 +20,7 @@ import io.reactivex.rxjava3.core.Flowable import org.junit.Test import org.junit.runner.RunWith -class PartyDetailScreen: Screen() { +class PartyDetailScreen : Screen() { val titleView = KTextView { withId(R.id.title_view) } val newQuestButton = KButton { withId(R.id.new_quest_button) } val questDetailButton = KButton { withId(R.id.quest_detail_button) } @@ -30,7 +30,7 @@ class PartyDetailScreen: Screen() { @LargeTest @RunWith(AndroidJUnit4::class) -class PartyDetailFragmentTest: FragmentTestCase() { +class PartyDetailFragmentTest : FragmentTestCase() { private lateinit var viewModel: PartyViewModel override val screen = PartyDetailScreen() @@ -41,7 +41,7 @@ class PartyDetailFragmentTest: FragmentTestCase() { - val strengthStatsView = KView { withId(R.id.strengthStatsView)} +class StatsScreen : Screen() { + val strengthStatsView = KView { withId(R.id.strengthStatsView) } val strengthAllocateButton = KButton { withId(R.id.allocateButton) isDescendantOfA { withId(R.id.strengthStatsView) } } - val intelligenceStatsView = KView { withId(R.id.intelligenceStatsView)} + val intelligenceStatsView = KView { withId(R.id.intelligenceStatsView) } val intelligenceAllocateButton = KButton { withId(R.id.allocateButton) isDescendantOfA { withId(R.id.intelligenceStatsView) } } - val constitutionStatsView = KView { withId(R.id.constitutionStatsView)} + val constitutionStatsView = KView { withId(R.id.constitutionStatsView) } val constitutionAllocateButton = KButton { withId(R.id.allocateButton) isDescendantOfA { withId(R.id.constitutionStatsView) } } - val perceptionStatsView = KView { withId(R.id.perceptionStatsView)} + val perceptionStatsView = KView { withId(R.id.perceptionStatsView) } val perceptionAllocateButton = KButton { withId(R.id.allocateButton) isDescendantOfA { withId(R.id.perceptionStatsView) } @@ -41,8 +41,7 @@ class StatsScreen: Screen() { @LargeTest @RunWith(AndroidJUnit4::class) -class StatsFragmentTest: FragmentTestCase() { - +class StatsFragmentTest : FragmentTestCase() { override val screen = StatsScreen() @@ -92,13 +91,13 @@ class StatsFragmentTest: FragmentTestCase() { val gems4View = KView { withId(R.id.gems_4_view) } val gems4Button = KTextView { @@ -43,11 +22,6 @@ class GemPurchaseScreen: Screen() { withId(R.id.purchase_button) isDescendantOfA { withId(R.id.gems_84_view) } } - - val subscriptionPromo = KView { withId(R.id.subscription_promo) } - val subscriptionPromoButton = KView { withId(R.id.button) - isDescendantOfA { withId(R.id.subscription_promo) } - } } @LargeTest @@ -166,4 +140,4 @@ class GemsPurchaseFragmentTest : subscriptionPromo.isGone() } } -} \ No newline at end of file +}*/ diff --git a/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/fragments/purchases/SubscriptionFragmentTest.kt b/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/fragments/purchases/SubscriptionFragmentTest.kt index 361e0b516..6790afd44 100644 --- a/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/fragments/purchases/SubscriptionFragmentTest.kt +++ b/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/fragments/purchases/SubscriptionFragmentTest.kt @@ -1,25 +1,6 @@ package com.habitrpg.android.habitica.ui.fragments.purchases -import androidx.fragment.app.testing.launchFragmentInContainer -import androidx.test.ext.junit.runners.AndroidJUnit4 -import androidx.test.filters.LargeTest -import com.habitrpg.android.habitica.R -import com.habitrpg.android.habitica.databinding.FragmentGemPurchaseBinding -import com.habitrpg.android.habitica.databinding.FragmentSubscriptionBinding -import com.habitrpg.android.habitica.helpers.PurchaseHandler -import com.habitrpg.android.habitica.helpers.PurchaseTypes -import com.habitrpg.android.habitica.ui.fragments.FragmentTestCase -import io.github.kakaocup.kakao.common.views.KView -import io.github.kakaocup.kakao.screen.Screen -import io.mockk.MockKAdditionalAnswerScope -import io.mockk.coEvery -import io.mockk.every -import io.mockk.mockk -import io.mockk.spyk -import org.junit.Test -import org.junit.runner.RunWith -import org.solovyev.android.checkout.Inventory -import org.solovyev.android.checkout.Sku +/* class SubscriptionScreen: Screen() { val sub1MonthView = KView { withId(R.id.subscription1month) } @@ -100,4 +81,4 @@ class SubscriptionFragmentTest : sub12MonthView.hasDescendant { withText("12 Months") } } } -} \ No newline at end of file +}*/ diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaBaseApplication.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaBaseApplication.kt index 456990987..6df86c481 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaBaseApplication.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaBaseApplication.kt @@ -115,8 +115,8 @@ abstract class HabiticaBaseApplication : Application(), Application.ActivityLife val configuration: Configuration = resources.configuration val languageHelper = LanguageHelper(sharedPrefs.getString("language", "en")) if (if (SDK_INT >= Build.VERSION_CODES.N) { - configuration.locales.isEmpty || configuration.locales[0] != languageHelper.locale - } else { + configuration.locales.isEmpty || configuration.locales[0] != languageHelper.locale + } else { configuration.locale != languageHelper.locale } ) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/api/ApiService.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/api/ApiService.kt index b6fe2f858..565f7731c 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/api/ApiService.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/api/ApiService.kt @@ -1,24 +1,52 @@ package com.habitrpg.android.habitica.api -import com.habitrpg.android.habitica.models.* +import com.habitrpg.android.habitica.models.Achievement +import com.habitrpg.android.habitica.models.ContentResult +import com.habitrpg.android.habitica.models.LeaveChallengeBody +import com.habitrpg.android.habitica.models.PurchaseValidationRequest +import com.habitrpg.android.habitica.models.PurchaseValidationResult +import com.habitrpg.android.habitica.models.SubscriptionValidationRequest import com.habitrpg.android.habitica.models.Tag +import com.habitrpg.android.habitica.models.TeamPlan +import com.habitrpg.android.habitica.models.WorldState import com.habitrpg.android.habitica.models.auth.UserAuth import com.habitrpg.android.habitica.models.auth.UserAuthResponse import com.habitrpg.android.habitica.models.auth.UserAuthSocial import com.habitrpg.android.habitica.models.inventory.Equipment import com.habitrpg.android.habitica.models.inventory.Quest import com.habitrpg.android.habitica.models.members.Member -import com.habitrpg.android.habitica.models.responses.* +import com.habitrpg.android.habitica.models.responses.BulkTaskScoringData +import com.habitrpg.android.habitica.models.responses.BuyResponse +import com.habitrpg.android.habitica.models.responses.FeedResponse +import com.habitrpg.android.habitica.models.responses.HabitResponse +import com.habitrpg.android.habitica.models.responses.PostChatMessageResult +import com.habitrpg.android.habitica.models.responses.SkillResponse +import com.habitrpg.android.habitica.models.responses.Status +import com.habitrpg.android.habitica.models.responses.TaskDirectionData +import com.habitrpg.android.habitica.models.responses.UnlockResponse +import com.habitrpg.android.habitica.models.responses.VerifyUsernameResponse import com.habitrpg.android.habitica.models.shops.Shop import com.habitrpg.android.habitica.models.shops.ShopItem -import com.habitrpg.android.habitica.models.social.* +import com.habitrpg.android.habitica.models.social.Challenge +import com.habitrpg.android.habitica.models.social.ChatMessage +import com.habitrpg.android.habitica.models.social.FindUsernameResult +import com.habitrpg.android.habitica.models.social.Group +import com.habitrpg.android.habitica.models.social.InboxConversation import com.habitrpg.android.habitica.models.tasks.Task import com.habitrpg.android.habitica.models.tasks.TaskList import com.habitrpg.android.habitica.models.user.Items import com.habitrpg.android.habitica.models.user.Stats import com.habitrpg.android.habitica.models.user.User import io.reactivex.rxjava3.core.Flowable -import retrofit2.http.* +import retrofit2.http.Body +import retrofit2.http.DELETE +import retrofit2.http.GET +import retrofit2.http.HTTP +import retrofit2.http.Header +import retrofit2.http.POST +import retrofit2.http.PUT +import retrofit2.http.Path +import retrofit2.http.Query @JvmSuppressWildcards interface ApiService { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/api/GSonFactoryCreator.java b/Habitica/src/main/java/com/habitrpg/android/habitica/api/GSonFactoryCreator.java index 8d7a7649a..b26df94c8 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/api/GSonFactoryCreator.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/api/GSonFactoryCreator.java @@ -1,4 +1,5 @@ package com.habitrpg.android.habitica.api; + import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; @@ -43,9 +44,9 @@ import com.habitrpg.android.habitica.utils.FeedResponseDeserializer; import com.habitrpg.android.habitica.utils.FindUsernameResultDeserializer; import com.habitrpg.android.habitica.utils.GroupSerialization; import com.habitrpg.android.habitica.utils.MemberSerialization; +import com.habitrpg.android.habitica.utils.NotificationDeserializer; import com.habitrpg.android.habitica.utils.OwnedItemListDeserializer; import com.habitrpg.android.habitica.utils.OwnedMountListDeserializer; -import com.habitrpg.android.habitica.utils.NotificationDeserializer; import com.habitrpg.android.habitica.utils.OwnedPetListDeserializer; import com.habitrpg.android.habitica.utils.PurchasedDeserializer; import com.habitrpg.android.habitica.utils.QuestCollectDeserializer; diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/components/AppComponent.java b/Habitica/src/main/java/com/habitrpg/android/habitica/components/AppComponent.java index 92f8124cc..a67649a8c 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/components/AppComponent.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/components/AppComponent.java @@ -5,10 +5,8 @@ import com.habitrpg.android.habitica.modules.ApiModule; import com.habitrpg.android.habitica.modules.AppModule; import com.habitrpg.android.habitica.modules.DeveloperModule; import com.habitrpg.android.habitica.modules.RepositoryModule; -import com.habitrpg.android.habitica.modules.UserRepositoryModule; import com.habitrpg.android.habitica.modules.UserModule; - -import org.jetbrains.annotations.NotNull; +import com.habitrpg.android.habitica.modules.UserRepositoryModule; import javax.inject.Singleton; diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/components/UserComponent.java b/Habitica/src/main/java/com/habitrpg/android/habitica/components/UserComponent.java index 230d47796..2d6351f7b 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/components/UserComponent.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/components/UserComponent.java @@ -76,19 +76,19 @@ import com.habitrpg.android.habitica.ui.fragments.setup.WelcomeFragment; import com.habitrpg.android.habitica.ui.fragments.skills.SkillTasksRecyclerViewFragment; import com.habitrpg.android.habitica.ui.fragments.skills.SkillsFragment; import com.habitrpg.android.habitica.ui.fragments.social.ChatFragment; -import com.habitrpg.android.habitica.ui.fragments.social.guilds.GuildDetailFragment; -import com.habitrpg.android.habitica.ui.fragments.social.guilds.GuildFragment; import com.habitrpg.android.habitica.ui.fragments.social.InboxMessageListFragment; import com.habitrpg.android.habitica.ui.fragments.social.InboxOverviewFragment; -import com.habitrpg.android.habitica.ui.fragments.social.party.NoPartyFragmentFragment; -import com.habitrpg.android.habitica.ui.fragments.social.guilds.GuildListFragment; import com.habitrpg.android.habitica.ui.fragments.social.QuestDetailFragment; import com.habitrpg.android.habitica.ui.fragments.social.TavernDetailFragment; import com.habitrpg.android.habitica.ui.fragments.social.TavernFragment; import com.habitrpg.android.habitica.ui.fragments.social.challenges.ChallengeDetailFragment; import com.habitrpg.android.habitica.ui.fragments.social.challenges.ChallengeListFragment; import com.habitrpg.android.habitica.ui.fragments.social.challenges.ChallengesOverviewFragment; +import com.habitrpg.android.habitica.ui.fragments.social.guilds.GuildDetailFragment; +import com.habitrpg.android.habitica.ui.fragments.social.guilds.GuildFragment; +import com.habitrpg.android.habitica.ui.fragments.social.guilds.GuildListFragment; import com.habitrpg.android.habitica.ui.fragments.social.guilds.GuildOverviewFragment; +import com.habitrpg.android.habitica.ui.fragments.social.party.NoPartyFragmentFragment; import com.habitrpg.android.habitica.ui.fragments.social.party.PartyDetailFragment; import com.habitrpg.android.habitica.ui.fragments.social.party.PartyFragment; import com.habitrpg.android.habitica.ui.fragments.social.party.PartyInviteFragment; diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/ApiClient.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/ApiClient.kt index a36504e0b..d1023035a 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/ApiClient.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/ApiClient.kt @@ -1,15 +1,37 @@ package com.habitrpg.android.habitica.data import com.habitrpg.android.habitica.api.HostConfig -import com.habitrpg.android.habitica.models.* +import com.habitrpg.android.habitica.models.Achievement +import com.habitrpg.android.habitica.models.ContentResult +import com.habitrpg.android.habitica.models.LeaveChallengeBody +import com.habitrpg.android.habitica.models.PurchaseValidationRequest +import com.habitrpg.android.habitica.models.PurchaseValidationResult +import com.habitrpg.android.habitica.models.SubscriptionValidationRequest +import com.habitrpg.android.habitica.models.Tag +import com.habitrpg.android.habitica.models.TeamPlan +import com.habitrpg.android.habitica.models.WorldState import com.habitrpg.android.habitica.models.auth.UserAuthResponse import com.habitrpg.android.habitica.models.inventory.Equipment import com.habitrpg.android.habitica.models.inventory.Quest import com.habitrpg.android.habitica.models.members.Member -import com.habitrpg.android.habitica.models.responses.* +import com.habitrpg.android.habitica.models.responses.BulkTaskScoringData +import com.habitrpg.android.habitica.models.responses.BuyResponse +import com.habitrpg.android.habitica.models.responses.ErrorResponse +import com.habitrpg.android.habitica.models.responses.FeedResponse +import com.habitrpg.android.habitica.models.responses.HabitResponse +import com.habitrpg.android.habitica.models.responses.PostChatMessageResult +import com.habitrpg.android.habitica.models.responses.SkillResponse +import com.habitrpg.android.habitica.models.responses.Status +import com.habitrpg.android.habitica.models.responses.TaskDirectionData +import com.habitrpg.android.habitica.models.responses.UnlockResponse +import com.habitrpg.android.habitica.models.responses.VerifyUsernameResponse import com.habitrpg.android.habitica.models.shops.Shop import com.habitrpg.android.habitica.models.shops.ShopItem -import com.habitrpg.android.habitica.models.social.* +import com.habitrpg.android.habitica.models.social.Challenge +import com.habitrpg.android.habitica.models.social.ChatMessage +import com.habitrpg.android.habitica.models.social.FindUsernameResult +import com.habitrpg.android.habitica.models.social.Group +import com.habitrpg.android.habitica.models.social.InboxConversation import com.habitrpg.android.habitica.models.tasks.Task import com.habitrpg.android.habitica.models.tasks.TaskList import com.habitrpg.android.habitica.models.user.Items diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/ContentRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/ContentRepository.kt index 173357d9c..ff0f53e2d 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/ContentRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/ContentRepository.kt @@ -4,7 +4,7 @@ import com.habitrpg.android.habitica.models.ContentResult import com.habitrpg.android.habitica.models.WorldState import io.reactivex.rxjava3.core.Flowable -interface ContentRepository: BaseRepository { +interface ContentRepository : BaseRepository { fun retrieveContent(forced: Boolean = false): Flowable fun retrieveWorldState(): Flowable diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/InventoryRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/InventoryRepository.kt index 4f290e9f0..66c83b869 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/InventoryRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/InventoryRepository.kt @@ -1,11 +1,23 @@ package com.habitrpg.android.habitica.data -import com.habitrpg.android.habitica.models.inventory.* +import com.habitrpg.android.habitica.models.inventory.Egg +import com.habitrpg.android.habitica.models.inventory.Equipment +import com.habitrpg.android.habitica.models.inventory.Food +import com.habitrpg.android.habitica.models.inventory.HatchingPotion +import com.habitrpg.android.habitica.models.inventory.Item +import com.habitrpg.android.habitica.models.inventory.Mount +import com.habitrpg.android.habitica.models.inventory.Pet +import com.habitrpg.android.habitica.models.inventory.Quest +import com.habitrpg.android.habitica.models.inventory.QuestContent import com.habitrpg.android.habitica.models.responses.BuyResponse import com.habitrpg.android.habitica.models.responses.FeedResponse import com.habitrpg.android.habitica.models.shops.Shop import com.habitrpg.android.habitica.models.shops.ShopItem -import com.habitrpg.android.habitica.models.user.* +import com.habitrpg.android.habitica.models.user.Items +import com.habitrpg.android.habitica.models.user.OwnedItem +import com.habitrpg.android.habitica.models.user.OwnedMount +import com.habitrpg.android.habitica.models.user.OwnedPet +import com.habitrpg.android.habitica.models.user.User import io.reactivex.rxjava3.core.Flowable interface InventoryRepository : BaseRepository { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/SocialRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/SocialRepository.kt index af3994412..bf4551fa7 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/SocialRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/SocialRepository.kt @@ -4,11 +4,14 @@ import com.habitrpg.android.habitica.models.Achievement import com.habitrpg.android.habitica.models.inventory.Quest import com.habitrpg.android.habitica.models.members.Member import com.habitrpg.android.habitica.models.responses.PostChatMessageResult -import com.habitrpg.android.habitica.models.social.* +import com.habitrpg.android.habitica.models.social.ChatMessage +import com.habitrpg.android.habitica.models.social.FindUsernameResult +import com.habitrpg.android.habitica.models.social.Group +import com.habitrpg.android.habitica.models.social.GroupMembership +import com.habitrpg.android.habitica.models.social.InboxConversation import com.habitrpg.android.habitica.models.user.User import io.reactivex.rxjava3.core.Flowable import io.reactivex.rxjava3.core.Single -import java.util.* interface SocialRepository : BaseRepository { fun getPublicGuilds(): Flowable> diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/TaskRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/TaskRepository.kt index 601f0aa26..ac590f0ff 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/TaskRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/TaskRepository.kt @@ -11,7 +11,7 @@ import com.habitrpg.android.habitica.models.user.User import io.reactivex.rxjava3.core.Flowable import io.reactivex.rxjava3.core.Maybe import io.reactivex.rxjava3.core.Single -import java.util.* +import java.util.Date interface TaskRepository : BaseRepository { fun getTasks(taskType: TaskType, userID: String? = null): Flowable> diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/ApiClientImpl.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/ApiClientImpl.kt index cd06dd257..4763a71bc 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/ApiClientImpl.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/ApiClientImpl.kt @@ -13,7 +13,15 @@ import com.habitrpg.android.habitica.api.HostConfig import com.habitrpg.android.habitica.api.Server import com.habitrpg.android.habitica.data.ApiClient import com.habitrpg.android.habitica.helpers.NotificationsManager -import com.habitrpg.android.habitica.models.* +import com.habitrpg.android.habitica.models.Achievement +import com.habitrpg.android.habitica.models.ContentResult +import com.habitrpg.android.habitica.models.LeaveChallengeBody +import com.habitrpg.android.habitica.models.PurchaseValidationRequest +import com.habitrpg.android.habitica.models.PurchaseValidationResult +import com.habitrpg.android.habitica.models.SubscriptionValidationRequest +import com.habitrpg.android.habitica.models.Tag +import com.habitrpg.android.habitica.models.TeamPlan +import com.habitrpg.android.habitica.models.WorldState import com.habitrpg.android.habitica.models.auth.UserAuth import com.habitrpg.android.habitica.models.auth.UserAuthResponse import com.habitrpg.android.habitica.models.auth.UserAuthSocial @@ -21,10 +29,24 @@ import com.habitrpg.android.habitica.models.auth.UserAuthSocialTokens import com.habitrpg.android.habitica.models.inventory.Equipment import com.habitrpg.android.habitica.models.inventory.Quest import com.habitrpg.android.habitica.models.members.Member -import com.habitrpg.android.habitica.models.responses.* +import com.habitrpg.android.habitica.models.responses.BulkTaskScoringData +import com.habitrpg.android.habitica.models.responses.BuyResponse +import com.habitrpg.android.habitica.models.responses.ErrorResponse +import com.habitrpg.android.habitica.models.responses.FeedResponse +import com.habitrpg.android.habitica.models.responses.HabitResponse +import com.habitrpg.android.habitica.models.responses.PostChatMessageResult +import com.habitrpg.android.habitica.models.responses.SkillResponse +import com.habitrpg.android.habitica.models.responses.Status +import com.habitrpg.android.habitica.models.responses.TaskDirectionData +import com.habitrpg.android.habitica.models.responses.UnlockResponse +import com.habitrpg.android.habitica.models.responses.VerifyUsernameResponse import com.habitrpg.android.habitica.models.shops.Shop import com.habitrpg.android.habitica.models.shops.ShopItem -import com.habitrpg.android.habitica.models.social.* +import com.habitrpg.android.habitica.models.social.Challenge +import com.habitrpg.android.habitica.models.social.ChatMessage +import com.habitrpg.android.habitica.models.social.FindUsernameResult +import com.habitrpg.android.habitica.models.social.Group +import com.habitrpg.android.habitica.models.social.InboxConversation import com.habitrpg.android.habitica.models.tasks.Task import com.habitrpg.android.habitica.models.tasks.TaskList import com.habitrpg.android.habitica.models.user.Items @@ -48,7 +70,7 @@ import java.io.IOException import java.net.SocketException import java.net.SocketTimeoutException import java.net.UnknownHostException -import java.util.* +import java.util.GregorianCalendar import java.util.concurrent.TimeUnit import javax.net.ssl.SSLException diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/ContentRepositoryImpl.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/ContentRepositoryImpl.kt index 94c363df5..64e1bfea0 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/ContentRepositoryImpl.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/ContentRepositoryImpl.kt @@ -9,7 +9,7 @@ import com.habitrpg.android.habitica.models.ContentResult import com.habitrpg.android.habitica.models.WorldState import com.habitrpg.android.habitica.models.inventory.SpecialItem import io.reactivex.rxjava3.core.Flowable -import java.util.* +import java.util.Date class ContentRepositoryImpl(localRepository: T, apiClient: ApiClient, context: Context) : BaseRepositoryImpl(localRepository, apiClient), ContentRepository { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/InventoryRepositoryImpl.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/InventoryRepositoryImpl.kt index 246ebaaa5..7763ccab7 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/InventoryRepositoryImpl.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/InventoryRepositoryImpl.kt @@ -4,12 +4,24 @@ import com.habitrpg.android.habitica.data.ApiClient import com.habitrpg.android.habitica.data.InventoryRepository import com.habitrpg.android.habitica.data.local.InventoryLocalRepository import com.habitrpg.android.habitica.helpers.AppConfigManager -import com.habitrpg.android.habitica.models.inventory.* +import com.habitrpg.android.habitica.models.inventory.Egg +import com.habitrpg.android.habitica.models.inventory.Equipment +import com.habitrpg.android.habitica.models.inventory.Food +import com.habitrpg.android.habitica.models.inventory.HatchingPotion +import com.habitrpg.android.habitica.models.inventory.Item +import com.habitrpg.android.habitica.models.inventory.Mount +import com.habitrpg.android.habitica.models.inventory.Pet +import com.habitrpg.android.habitica.models.inventory.Quest +import com.habitrpg.android.habitica.models.inventory.QuestContent import com.habitrpg.android.habitica.models.responses.BuyResponse import com.habitrpg.android.habitica.models.responses.FeedResponse import com.habitrpg.android.habitica.models.shops.Shop import com.habitrpg.android.habitica.models.shops.ShopItem -import com.habitrpg.android.habitica.models.user.* +import com.habitrpg.android.habitica.models.user.Items +import com.habitrpg.android.habitica.models.user.OwnedItem +import com.habitrpg.android.habitica.models.user.OwnedMount +import com.habitrpg.android.habitica.models.user.OwnedPet +import com.habitrpg.android.habitica.models.user.User import io.reactivex.rxjava3.core.Flowable class InventoryRepositoryImpl(localRepository: InventoryLocalRepository, apiClient: ApiClient, userID: String, var appConfigManager: AppConfigManager) : BaseRepositoryImpl(localRepository, apiClient, userID), InventoryRepository { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/SocialRepositoryImpl.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/SocialRepositoryImpl.kt index 954164dd4..80b4f9330 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/SocialRepositoryImpl.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/SocialRepositoryImpl.kt @@ -9,13 +9,16 @@ import com.habitrpg.android.habitica.models.Achievement import com.habitrpg.android.habitica.models.inventory.Quest import com.habitrpg.android.habitica.models.members.Member import com.habitrpg.android.habitica.models.responses.PostChatMessageResult -import com.habitrpg.android.habitica.models.social.* +import com.habitrpg.android.habitica.models.social.ChatMessage +import com.habitrpg.android.habitica.models.social.FindUsernameResult +import com.habitrpg.android.habitica.models.social.Group +import com.habitrpg.android.habitica.models.social.GroupMembership +import com.habitrpg.android.habitica.models.social.InboxConversation import com.habitrpg.android.habitica.models.user.User import io.reactivex.rxjava3.core.Flowable import io.reactivex.rxjava3.core.Single import retrofit2.HttpException -import java.util.* -import kotlin.collections.HashMap +import java.util.UUID class SocialRepositoryImpl(localRepository: SocialLocalRepository, apiClient: ApiClient, userID: String) : BaseRepositoryImpl(localRepository, apiClient, userID), SocialRepository { override fun transferGroupOwnership(groupID: String, userID: String): Flowable { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.kt index 74c8f489e..6d6c49df0 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.kt @@ -12,7 +12,11 @@ import com.habitrpg.android.habitica.models.responses.BulkTaskScoringData import com.habitrpg.android.habitica.models.responses.TaskDirection import com.habitrpg.android.habitica.models.responses.TaskDirectionData import com.habitrpg.android.habitica.models.responses.TaskScoringResult -import com.habitrpg.android.habitica.models.tasks.* +import com.habitrpg.android.habitica.models.tasks.ChecklistItem +import com.habitrpg.android.habitica.models.tasks.Task +import com.habitrpg.android.habitica.models.tasks.TaskList +import com.habitrpg.android.habitica.models.tasks.TaskType +import com.habitrpg.android.habitica.models.tasks.TasksOrder import com.habitrpg.android.habitica.models.user.OwnedItem import com.habitrpg.android.habitica.models.user.User import com.habitrpg.android.habitica.proxy.AnalyticsManager @@ -20,7 +24,9 @@ import io.reactivex.rxjava3.core.Flowable import io.reactivex.rxjava3.core.Maybe import io.reactivex.rxjava3.core.Single import java.text.SimpleDateFormat -import java.util.* +import java.util.Date +import java.util.Locale +import java.util.UUID class TaskRepositoryImpl(localRepository: TaskLocalRepository, apiClient: ApiClient, userID: String, val appConfigManager: AppConfigManager, val analyticsManager: AnalyticsManager) : BaseRepositoryImpl(localRepository, apiClient, userID), TaskRepository { private var lastTaskAction: Long = 0 diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/UserRepositoryImpl.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/UserRepositoryImpl.kt index 21cca8f75..18b14bb99 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/UserRepositoryImpl.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/UserRepositoryImpl.kt @@ -26,7 +26,8 @@ import com.habitrpg.android.habitica.models.user.User import io.reactivex.rxjava3.core.Flowable import io.reactivex.rxjava3.core.Maybe import io.reactivex.rxjava3.functions.BiFunction -import java.util.* +import java.util.Date +import java.util.GregorianCalendar import java.util.concurrent.TimeUnit class UserRepositoryImpl(localRepository: UserLocalRepository, apiClient: ApiClient, userID: String, private val taskRepository: TaskRepository, var appConfigManager: AppConfigManager) : BaseRepositoryImpl(localRepository, apiClient, userID), UserRepository { @@ -380,7 +381,8 @@ class UserRepositoryImpl(localRepository: UserLocalRepository, apiClient: ApiCli override fun retrieveTeamPlan(teamID: String): Flowable { return Flowable.zip( - apiClient.getGroup(teamID), apiClient.getTeamPlanTasks(teamID)) { team, tasks -> + apiClient.getGroup(teamID), apiClient.getTeamPlanTasks(teamID) + ) { team, tasks -> team.tasks = tasks team } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/InventoryLocalRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/InventoryLocalRepository.kt index a17e87ab9..0bfa0b33d 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/InventoryLocalRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/InventoryLocalRepository.kt @@ -1,8 +1,16 @@ package com.habitrpg.android.habitica.data.local -import com.habitrpg.android.habitica.models.inventory.* +import com.habitrpg.android.habitica.models.inventory.Equipment +import com.habitrpg.android.habitica.models.inventory.Item +import com.habitrpg.android.habitica.models.inventory.Mount +import com.habitrpg.android.habitica.models.inventory.Pet +import com.habitrpg.android.habitica.models.inventory.QuestContent import com.habitrpg.android.habitica.models.shops.ShopItem -import com.habitrpg.android.habitica.models.user.* +import com.habitrpg.android.habitica.models.user.Items +import com.habitrpg.android.habitica.models.user.OwnedItem +import com.habitrpg.android.habitica.models.user.OwnedMount +import com.habitrpg.android.habitica.models.user.OwnedPet +import com.habitrpg.android.habitica.models.user.User import io.reactivex.rxjava3.core.Flowable interface InventoryLocalRepository : ContentLocalRepository { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/UserLocalRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/UserLocalRepository.kt index 9842db322..9066b46cb 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/UserLocalRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/UserLocalRepository.kt @@ -1,6 +1,10 @@ package com.habitrpg.android.habitica.data.local -import com.habitrpg.android.habitica.models.* +import com.habitrpg.android.habitica.models.Achievement +import com.habitrpg.android.habitica.models.QuestAchievement +import com.habitrpg.android.habitica.models.Skill +import com.habitrpg.android.habitica.models.TeamPlan +import com.habitrpg.android.habitica.models.TutorialStep import com.habitrpg.android.habitica.models.social.ChatMessage import com.habitrpg.android.habitica.models.social.Group import com.habitrpg.android.habitica.models.user.User diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmChallengeLocalRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmChallengeLocalRepository.kt index abdc7b191..52810fc64 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmChallengeLocalRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmChallengeLocalRepository.kt @@ -9,7 +9,6 @@ import hu.akarnokd.rxjava3.bridge.RxJavaBridge import io.reactivex.rxjava3.core.Flowable import io.realm.Realm import io.realm.Sort -import java.util.* class RealmChallengeLocalRepository(realm: Realm) : RealmBaseLocalRepository(realm), ChallengeLocalRepository { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmCustomizationLocalRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmCustomizationLocalRepository.kt index 6f603db28..502d81809 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmCustomizationLocalRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmCustomizationLocalRepository.kt @@ -5,7 +5,7 @@ import com.habitrpg.android.habitica.models.inventory.Customization import hu.akarnokd.rxjava3.bridge.RxJavaBridge import io.reactivex.rxjava3.core.Flowable import io.realm.Realm -import java.util.* +import java.util.Date class RealmCustomizationLocalRepository(realm: Realm) : RealmContentLocalRepository(realm), CustomizationLocalRepository { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmInventoryLocalRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmInventoryLocalRepository.kt index cd739e699..aabb9a542 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmInventoryLocalRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmInventoryLocalRepository.kt @@ -2,18 +2,29 @@ package com.habitrpg.android.habitica.data.local.implementation import com.habitrpg.android.habitica.data.local.InventoryLocalRepository import com.habitrpg.android.habitica.helpers.RxErrorHandler -import com.habitrpg.android.habitica.models.inventory.* +import com.habitrpg.android.habitica.models.inventory.Egg +import com.habitrpg.android.habitica.models.inventory.Equipment +import com.habitrpg.android.habitica.models.inventory.Food +import com.habitrpg.android.habitica.models.inventory.HatchingPotion +import com.habitrpg.android.habitica.models.inventory.Item +import com.habitrpg.android.habitica.models.inventory.Mount +import com.habitrpg.android.habitica.models.inventory.Pet +import com.habitrpg.android.habitica.models.inventory.QuestContent +import com.habitrpg.android.habitica.models.inventory.SpecialItem import com.habitrpg.android.habitica.models.shops.ShopItem -import com.habitrpg.android.habitica.models.user.* +import com.habitrpg.android.habitica.models.user.Items +import com.habitrpg.android.habitica.models.user.OwnedItem +import com.habitrpg.android.habitica.models.user.OwnedMount +import com.habitrpg.android.habitica.models.user.OwnedPet +import com.habitrpg.android.habitica.models.user.User import hu.akarnokd.rxjava3.bridge.RxJavaBridge import io.reactivex.rxjava3.core.Flowable import io.realm.Realm import io.realm.RealmObject import io.realm.Sort -import io.realm.kotlin.isManaged import java.text.SimpleDateFormat -import java.util.* -import kotlin.collections.HashMap +import java.util.Date +import java.util.Locale class RealmInventoryLocalRepository(realm: Realm) : RealmContentLocalRepository(realm), InventoryLocalRepository { override fun getQuestContent(keys: List): Flowable> { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmSocialLocalRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmSocialLocalRepository.kt index 2bac1fc16..6569e9a72 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmSocialLocalRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmSocialLocalRepository.kt @@ -3,13 +3,16 @@ package com.habitrpg.android.habitica.data.local.implementation import com.habitrpg.android.habitica.data.local.SocialLocalRepository import com.habitrpg.android.habitica.models.inventory.Quest import com.habitrpg.android.habitica.models.members.Member -import com.habitrpg.android.habitica.models.social.* +import com.habitrpg.android.habitica.models.social.ChatMessage +import com.habitrpg.android.habitica.models.social.ChatMessageLike +import com.habitrpg.android.habitica.models.social.Group +import com.habitrpg.android.habitica.models.social.GroupMembership +import com.habitrpg.android.habitica.models.social.InboxConversation import com.habitrpg.android.habitica.models.user.User import hu.akarnokd.rxjava3.bridge.RxJavaBridge import io.reactivex.rxjava3.core.Flowable import io.realm.Realm import io.realm.Sort -import java.util.* class RealmSocialLocalRepository(realm: Realm) : RealmBaseLocalRepository(realm), SocialLocalRepository { @@ -58,9 +61,9 @@ class RealmSocialLocalRepository(realm: Realm) : RealmBaseLocalRepository(realm) messages.forEach { it.userID = userID } for (message in messages) { val existingMessage = realm.where(ChatMessage::class.java) - .equalTo("id", message.id) - .findAll() - .firstOrNull() + .equalTo("id", message.id) + .findAll() + .firstOrNull() message.isSeen = existingMessage != null } save(messages) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmTaskLocalRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmTaskLocalRepository.kt index 4558accc7..5e44c04f1 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmTaskLocalRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmTaskLocalRepository.kt @@ -1,7 +1,12 @@ package com.habitrpg.android.habitica.data.local.implementation import com.habitrpg.android.habitica.data.local.TaskLocalRepository -import com.habitrpg.android.habitica.models.tasks.* +import com.habitrpg.android.habitica.models.tasks.ChecklistItem +import com.habitrpg.android.habitica.models.tasks.RemindersItem +import com.habitrpg.android.habitica.models.tasks.Task +import com.habitrpg.android.habitica.models.tasks.TaskList +import com.habitrpg.android.habitica.models.tasks.TaskType +import com.habitrpg.android.habitica.models.tasks.TasksOrder import com.habitrpg.android.habitica.models.user.User import hu.akarnokd.rxjava3.bridge.RxJavaBridge import io.reactivex.rxjava3.core.Flowable diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmUserLocalRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmUserLocalRepository.kt index ad7040b3a..7a195a5da 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmUserLocalRepository.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmUserLocalRepository.kt @@ -2,7 +2,12 @@ package com.habitrpg.android.habitica.data.local.implementation import com.habitrpg.android.habitica.data.local.UserLocalRepository import com.habitrpg.android.habitica.data.local.UserQuestStatus -import com.habitrpg.android.habitica.models.* +import com.habitrpg.android.habitica.models.Achievement +import com.habitrpg.android.habitica.models.QuestAchievement +import com.habitrpg.android.habitica.models.Skill +import com.habitrpg.android.habitica.models.Tag +import com.habitrpg.android.habitica.models.TeamPlan +import com.habitrpg.android.habitica.models.TutorialStep import com.habitrpg.android.habitica.models.social.ChatMessage import com.habitrpg.android.habitica.models.social.Group import com.habitrpg.android.habitica.models.user.User diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/executors/UIThread.java b/Habitica/src/main/java/com/habitrpg/android/habitica/executors/UIThread.java index 3a3419758..9617314a2 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/executors/UIThread.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/executors/UIThread.java @@ -3,8 +3,8 @@ package com.habitrpg.android.habitica.executors; import javax.inject.Inject; import javax.inject.Singleton; -import io.reactivex.rxjava3.core.Scheduler; import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; +import io.reactivex.rxjava3.core.Scheduler; @Singleton public class UIThread implements PostExecutionThread { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/extensions/Context-Extensions.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/extensions/Context-Extensions.kt index f5b8e23bd..5dbc8e99d 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/extensions/Context-Extensions.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/extensions/Context-Extensions.kt @@ -5,7 +5,7 @@ import android.content.Context import android.content.res.Configuration import android.util.TypedValue import android.view.LayoutInflater -import java.util.* +import java.util.Locale val Context.layoutInflater: LayoutInflater get() = this.getSystemService(Service.LAYOUT_INFLATER_SERVICE) as LayoutInflater diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/extensions/Date-Extensions.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/extensions/Date-Extensions.kt index 4ed6055f3..7582f866a 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/extensions/Date-Extensions.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/extensions/Date-Extensions.kt @@ -2,9 +2,13 @@ package com.habitrpg.android.habitica.extensions import android.content.res.Resources import com.habitrpg.android.habitica.R -import java.util.* +import java.util.Calendar +import java.util.Date import kotlin.math.round -import kotlin.time.* +import kotlin.time.Duration +import kotlin.time.DurationUnit +import kotlin.time.ExperimentalTime +import kotlin.time.milliseconds class DateUtils { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/extensions/PendingIntent-Extensions.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/extensions/PendingIntent-Extensions.kt index cbafc58fb..065d74934 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/extensions/PendingIntent-Extensions.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/extensions/PendingIntent-Extensions.kt @@ -1,7 +1,6 @@ package com.habitrpg.android.habitica.extensions import android.app.PendingIntent -import android.content.Context import android.os.Build fun withImmutableFlag(flags: Int): Int { @@ -18,4 +17,4 @@ fun withMutableFlag(flags: Int): Int { } else { flags } -} \ No newline at end of file +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/AmplitudeManager.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/AmplitudeManager.kt index f67e61dd9..2c8301753 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/AmplitudeManager.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/AmplitudeManager.kt @@ -4,7 +4,6 @@ import com.amplitude.api.Amplitude import com.habitrpg.android.habitica.BuildConfig import org.json.JSONException import org.json.JSONObject -import java.util.HashMap object AmplitudeManager { var EVENT_CATEGORY_BEHAVIOUR = "behaviour" diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/AppConfigManager.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/AppConfigManager.kt index 01d4296b8..bbf4a5b3c 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/AppConfigManager.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/AppConfigManager.kt @@ -11,7 +11,6 @@ import com.habitrpg.android.habitica.models.WorldState import com.habitrpg.android.habitica.models.promotions.HabiticaPromotion import com.habitrpg.android.habitica.models.promotions.HabiticaWebPromotion import com.habitrpg.android.habitica.models.promotions.getHabiticaPromotionFromKey -import java.util.* class AppConfigManager(contentRepository: ContentRepository?) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/AprilFoolsHandler.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/AprilFoolsHandler.kt index 32fd3d2cc..43ade5029 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/AprilFoolsHandler.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/AprilFoolsHandler.kt @@ -1,6 +1,6 @@ package com.habitrpg.android.habitica.helpers -import java.util.* +import java.util.Date class AprilFoolsHandler { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/DeviceName.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/DeviceName.kt index 5b3fdabfe..3cf7a82bb 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/DeviceName.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/DeviceName.kt @@ -19,7 +19,7 @@ import java.io.IOException import java.io.InputStreamReader import java.net.HttpURLConnection import java.net.URL -import java.util.* +import java.util.Locale /* * Copyright (C) 2017 Jared Rummler @@ -434,9 +434,9 @@ object DeviceName { val info = DeviceInfo(json) if (codename.equals(info.codename, ignoreCase = true) && model == null || codename.equals( - info.codename, - ignoreCase = true - ) && model.equals(info.model, ignoreCase = true) + info.codename, + ignoreCase = true + ) && model.equals(info.model, ignoreCase = true) ) { // Save to SharedPreferences so we don't need to make another request. val editor = prefs.edit() diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/HealthFormatter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/HealthFormatter.kt index 48d3f73b5..c3652527e 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/HealthFormatter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/HealthFormatter.kt @@ -2,7 +2,7 @@ package com.habitrpg.android.habitica.helpers import android.os.Build import java.text.NumberFormat -import java.util.* +import java.util.Locale import kotlin.math.ceil import kotlin.math.floor diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/KeyHelper.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/KeyHelper.kt index 05740288b..2bffd6866 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/KeyHelper.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/KeyHelper.kt @@ -13,11 +13,26 @@ import java.io.ByteArrayInputStream import java.io.ByteArrayOutputStream import java.io.IOException import java.io.UnsupportedEncodingException -import java.lang.IllegalStateException import java.math.BigInteger -import java.security.* -import java.util.* -import javax.crypto.* +import java.security.GeneralSecurityException +import java.security.InvalidAlgorithmParameterException +import java.security.Key +import java.security.KeyPairGenerator +import java.security.KeyStore +import java.security.KeyStoreException +import java.security.NoSuchAlgorithmException +import java.security.NoSuchProviderException +import java.security.SecureRandom +import java.security.UnrecoverableKeyException +import java.util.Calendar +import javax.crypto.BadPaddingException +import javax.crypto.Cipher +import javax.crypto.CipherInputStream +import javax.crypto.CipherOutputStream +import javax.crypto.IllegalBlockSizeException +import javax.crypto.KeyGenerator +import javax.crypto.NoSuchPaddingException +import javax.crypto.SecretKey import javax.crypto.spec.GCMParameterSpec import javax.crypto.spec.SecretKeySpec import javax.security.auth.x500.X500Principal diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/LanguageHelper.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/LanguageHelper.kt index 31c9e4f78..217eba3d3 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/LanguageHelper.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/LanguageHelper.kt @@ -1,6 +1,6 @@ package com.habitrpg.android.habitica.helpers -import java.util.* +import java.util.Locale class LanguageHelper(languageSharedPref: String?) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/MainNavigationController.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/MainNavigationController.kt index c29d31b0b..775618cfd 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/MainNavigationController.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/MainNavigationController.kt @@ -8,7 +8,7 @@ import androidx.navigation.NavController import androidx.navigation.NavDeepLinkRequest import androidx.navigation.NavDirections import java.lang.ref.WeakReference -import java.util.* +import java.util.Date import kotlin.math.abs object MainNavigationController { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/NotificationsManager.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/NotificationsManager.kt index 7cc800403..aad1c1870 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/NotificationsManager.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/NotificationsManager.kt @@ -7,7 +7,7 @@ import io.reactivex.rxjava3.core.Flowable import io.reactivex.rxjava3.subjects.BehaviorSubject import io.reactivex.rxjava3.subjects.PublishSubject import java.lang.ref.WeakReference -import java.util.* +import java.util.Date class NotificationsManager { private val displayNotificationSubject = PublishSubject.create() @@ -19,9 +19,9 @@ class NotificationsManager { private var lastNotificationHandling: Date? = null val displayNotificationEvents: Flowable - get() { - return displayNotificationSubject.toFlowable(BackpressureStrategy.DROP) - } + get() { + return displayNotificationSubject.toFlowable(BackpressureStrategy.DROP) + } init { this.seenNotifications = HashMap() diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/PurchaseHandler.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/PurchaseHandler.kt index bf7f83188..7ed8284c6 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/PurchaseHandler.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/PurchaseHandler.kt @@ -1,21 +1,27 @@ package com.habitrpg.android.habitica.helpers import android.app.Activity -import android.app.Application import android.content.Context import android.content.SharedPreferences -import android.os.Bundle import androidx.core.content.edit import androidx.core.os.bundleOf -import com.android.billingclient.api.* -import com.android.billingclient.api.BillingClient.ConnectionState.DISCONNECTED -import com.google.api.Billing -import com.google.firebase.analytics.FirebaseAnalytics +import com.android.billingclient.api.AcknowledgePurchaseParams +import com.android.billingclient.api.BillingClient +import com.android.billingclient.api.BillingClientStateListener +import com.android.billingclient.api.BillingFlowParams +import com.android.billingclient.api.BillingResult +import com.android.billingclient.api.ConsumeParams +import com.android.billingclient.api.Purchase +import com.android.billingclient.api.PurchasesResponseListener +import com.android.billingclient.api.PurchasesUpdatedListener +import com.android.billingclient.api.SkuDetails +import com.android.billingclient.api.SkuDetailsParams +import com.android.billingclient.api.queryPurchasesAsync +import com.android.billingclient.api.querySkuDetails import com.google.firebase.crashlytics.FirebaseCrashlytics import com.habitrpg.android.habitica.HabiticaBaseApplication import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.data.ApiClient -import com.habitrpg.android.habitica.data.UserRepository import com.habitrpg.android.habitica.extensions.addOkButton import com.habitrpg.android.habitica.extensions.subscribeWithErrorHandler import com.habitrpg.android.habitica.models.IAPGift @@ -28,12 +34,14 @@ import com.habitrpg.android.habitica.ui.activities.PurchaseActivity import com.habitrpg.android.habitica.ui.viewmodels.MainUserViewModel import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog import io.reactivex.rxjava3.core.Flowable -import kotlinx.coroutines.* +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import org.json.JSONObject import retrofit2.HttpException - -import java.util.* - +import java.util.Date open class PurchaseHandler( private val context: Context, @@ -72,7 +80,6 @@ open class PurchaseHandler( } } - init { startListening() } @@ -86,9 +93,9 @@ open class PurchaseHandler( DISCONNECTED; val canMaybePurchase: Boolean - get() { - return this == UNITITIALIZED || this == READY - } + get() { + return this == UNITITIALIZED || this == READY + } } fun startListening() { @@ -169,7 +176,6 @@ open class PurchaseHandler( .setPurchaseToken(purchase.purchaseToken) .build() billingClient.consumeAsync(params) { result, message -> - } } @@ -209,7 +215,8 @@ open class PurchaseHandler( val plan = userViewModel.user.value?.purchased?.plan if (plan?.isActive == true) { if (plan.additionalData?.data?.orderId == purchase.orderId && - (plan.dateTerminated != null == purchase.isAutoRenewing)) { + (plan.dateTerminated != null == purchase.isAutoRenewing) + ) { return } } @@ -291,7 +298,6 @@ open class PurchaseHandler( .flatMap { userViewModel.userRepository.retrieveUser(false, true) } } - private fun durationString(sku: String): String { return when (sku) { PurchaseTypes.Subscription1MonthNoRenew, PurchaseTypes.Subscription1Month -> "1" @@ -383,7 +389,7 @@ open class PurchaseHandler( suspend fun retryUntil( times: Int = Int.MAX_VALUE, initialDelay: Long = 100, // 0.1 second - maxDelay: Long = 1000, // 1 second + maxDelay: Long = 1000, // 1 second factor: Double = 2.0, block: suspend () -> Boolean ) { @@ -393,4 +399,4 @@ suspend fun retryUntil( delay(currentDelay) currentDelay = (currentDelay * factor).toLong().coerceAtMost(maxDelay) } -} \ No newline at end of file +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/SignInWithAppleService.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/SignInWithAppleService.kt index 74dd4d937..fbf0ed11e 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/SignInWithAppleService.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/SignInWithAppleService.kt @@ -5,7 +5,7 @@ import android.os.Parcel import android.os.Parcelable import androidx.fragment.app.FragmentManager import com.willowtreeapps.signinwithapplebutton.SignInWithAppleConfiguration -import java.util.* +import java.util.UUID class SignInWithAppleService( private val fragmentManager: FragmentManager, diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/TaskAlarmManager.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/TaskAlarmManager.kt index 23861569d..aa659542d 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/TaskAlarmManager.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/TaskAlarmManager.kt @@ -17,7 +17,8 @@ import com.habitrpg.android.habitica.receivers.TaskReceiver import com.habitrpg.shared.habitica.HLogger import com.habitrpg.shared.habitica.LogLevel import io.reactivex.rxjava3.core.Flowable -import java.util.* +import java.util.Calendar +import java.util.Date class TaskAlarmManager(private var context: Context, private var taskRepository: TaskRepository, private var userId: String) { private val am: AlarmManager? = context.getSystemService(Context.ALARM_SERVICE) as? AlarmManager diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/TaskFilterHelper.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/TaskFilterHelper.kt index 33669781d..adb3a6c67 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/TaskFilterHelper.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/TaskFilterHelper.kt @@ -6,7 +6,6 @@ import io.realm.Case import io.realm.OrderedRealmCollection import io.realm.RealmQuery import io.realm.Sort -import java.util.* class TaskFilterHelper { var searchQuery: String? = null diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/UserStatComputer.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/UserStatComputer.kt index b6d586813..b15b2f1ad 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/UserStatComputer.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/UserStatComputer.kt @@ -4,7 +4,6 @@ import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.models.Avatar import com.habitrpg.android.habitica.models.inventory.Equipment import com.habitrpg.android.habitica.models.user.Stats -import java.util.* class UserStatComputer { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/GroupActivityNotification.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/GroupActivityNotification.kt index e24bd26b0..ba553a28a 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/GroupActivityNotification.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/GroupActivityNotification.kt @@ -11,12 +11,12 @@ import androidx.core.app.Person import androidx.core.app.RemoteInput import androidx.core.os.bundleOf import com.habitrpg.android.habitica.R -import com.habitrpg.android.habitica.extensions.withImmutableFlag import com.habitrpg.android.habitica.extensions.withMutableFlag import com.habitrpg.android.habitica.receivers.LocalNotificationActionReceiver import com.habitrpg.android.habitica.ui.helpers.EmojiParser import java.text.SimpleDateFormat -import java.util.* +import java.util.Date +import java.util.Locale class GroupActivityNotification(context: Context, identifier: String?) : HabiticaLocalNotification(context, identifier) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/HabiticaLocalNotification.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/HabiticaLocalNotification.kt index 3724a31f2..405a4cb1b 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/HabiticaLocalNotification.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/HabiticaLocalNotification.kt @@ -10,7 +10,7 @@ import androidx.core.app.NotificationManagerCompat import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.extensions.withImmutableFlag import com.habitrpg.android.habitica.ui.activities.MainActivity -import java.util.* +import java.util.Date /** * Created by keithholliday on 6/28/16. diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/PushNotificationManager.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/PushNotificationManager.kt index 249355efb..ced3a42f9 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/PushNotificationManager.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/PushNotificationManager.kt @@ -9,7 +9,6 @@ import com.habitrpg.android.habitica.data.ApiClient import com.habitrpg.android.habitica.helpers.AmplitudeManager import com.habitrpg.android.habitica.helpers.RxErrorHandler import com.habitrpg.android.habitica.models.user.User -import java.util.* class PushNotificationManager(var apiClient: ApiClient, private val sharedPreferences: SharedPreferences, private val context: Context) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/FeedPetUseCase.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/FeedPetUseCase.kt index c51167637..6df8d86b5 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/FeedPetUseCase.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/FeedPetUseCase.kt @@ -80,4 +80,4 @@ constructor( class RequestValues(val pet: Pet, val food: Food, val context: BaseActivity) : UseCase.RequestValues -} \ No newline at end of file +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/HatchPetUseCase.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/HatchPetUseCase.kt index 4ecf9bcdf..00df0eb22 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/HatchPetUseCase.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/HatchPetUseCase.kt @@ -51,4 +51,4 @@ constructor(private val inventoryRepository: InventoryRepository, postExecutionT } class RequestValues(val potion: HatchingPotion, val egg: Egg, val context: BaseActivity) : UseCase.RequestValues -} \ No newline at end of file +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/NotifyUserUseCase.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/NotifyUserUseCase.kt index baf859c31..ae22dcb34 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/NotifyUserUseCase.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/NotifyUserUseCase.kt @@ -9,7 +9,6 @@ import android.view.View import android.view.ViewGroup import android.widget.LinearLayout import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat import androidx.core.util.Pair import com.habitrpg.android.habitica.R diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/ScoreTaskLocallyInteractor.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/ScoreTaskLocallyInteractor.kt index 3250d5583..c5eaa9506 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/ScoreTaskLocallyInteractor.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/ScoreTaskLocallyInteractor.kt @@ -6,7 +6,6 @@ import com.habitrpg.android.habitica.models.tasks.Task import com.habitrpg.android.habitica.models.tasks.TaskType import com.habitrpg.android.habitica.models.user.Stats import com.habitrpg.android.habitica.models.user.User -import java.util.* import kotlin.math.min import kotlin.math.pow import kotlin.math.roundToLong diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/ContentResult.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/ContentResult.kt index 54182fedd..dae7f480f 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/ContentResult.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/ContentResult.kt @@ -1,6 +1,14 @@ package com.habitrpg.android.habitica.models -import com.habitrpg.android.habitica.models.inventory.* +import com.habitrpg.android.habitica.models.inventory.Customization +import com.habitrpg.android.habitica.models.inventory.Egg +import com.habitrpg.android.habitica.models.inventory.Equipment +import com.habitrpg.android.habitica.models.inventory.Food +import com.habitrpg.android.habitica.models.inventory.HatchingPotion +import com.habitrpg.android.habitica.models.inventory.Mount +import com.habitrpg.android.habitica.models.inventory.Pet +import com.habitrpg.android.habitica.models.inventory.QuestContent +import com.habitrpg.android.habitica.models.inventory.SpecialItem import io.realm.RealmList /** diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/Notification.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/Notification.kt index 76f1e205f..3fcc82979 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/Notification.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/Notification.kt @@ -1,6 +1,19 @@ package com.habitrpg.android.habitica.models -import com.habitrpg.android.habitica.models.notifications.* +import com.habitrpg.android.habitica.models.notifications.AchievementData +import com.habitrpg.android.habitica.models.notifications.ChallengeWonData +import com.habitrpg.android.habitica.models.notifications.FirstDropData +import com.habitrpg.android.habitica.models.notifications.GroupTaskApprovedData +import com.habitrpg.android.habitica.models.notifications.GroupTaskNeedsWorkData +import com.habitrpg.android.habitica.models.notifications.GroupTaskRequiresApprovalData +import com.habitrpg.android.habitica.models.notifications.GuildInvitationData +import com.habitrpg.android.habitica.models.notifications.LoginIncentiveData +import com.habitrpg.android.habitica.models.notifications.NewChatMessageData +import com.habitrpg.android.habitica.models.notifications.NewStuffData +import com.habitrpg.android.habitica.models.notifications.NotificationData +import com.habitrpg.android.habitica.models.notifications.PartyInvitationData +import com.habitrpg.android.habitica.models.notifications.QuestInvitationData +import com.habitrpg.android.habitica.models.notifications.UnallocatedPointsData class Notification { enum class Type(val type: String) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/Tag.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/Tag.kt index 7c63ef2e2..0482f9ea2 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/Tag.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/Tag.kt @@ -1,7 +1,5 @@ package com.habitrpg.android.habitica.models -import com.habitrpg.android.habitica.models.tasks.Task -import io.realm.RealmList import io.realm.RealmObject import io.realm.annotations.PrimaryKey diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/TutorialStep.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/TutorialStep.kt index cf7480148..316234d45 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/TutorialStep.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/TutorialStep.kt @@ -3,7 +3,7 @@ package com.habitrpg.android.habitica.models import io.realm.RealmModel import io.realm.RealmObject import io.realm.annotations.RealmClass -import java.util.* +import java.util.Date @RealmClass(embedded = true) open class TutorialStep : RealmObject(), BaseMainObject { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/WorldState.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/WorldState.kt index 570e2a6db..b3214dc10 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/WorldState.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/WorldState.kt @@ -6,7 +6,6 @@ import com.habitrpg.android.habitica.models.inventory.QuestRageStrike import io.realm.RealmList import io.realm.RealmObject import io.realm.annotations.PrimaryKey -import java.util.* open class WorldState : RealmObject(), BaseObject { @PrimaryKey diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/WorldStateEvent.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/WorldStateEvent.kt index b5c2e6b57..35f06d6f4 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/WorldStateEvent.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/WorldStateEvent.kt @@ -4,7 +4,7 @@ import com.google.gson.annotations.SerializedName import io.realm.RealmModel import io.realm.RealmObject import io.realm.annotations.RealmClass -import java.util.* +import java.util.Date @RealmClass(embedded = true) open class WorldStateEvent : RealmObject(), BaseMainObject { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Customization.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Customization.kt index af9025915..0067c44a3 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Customization.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Customization.kt @@ -3,7 +3,7 @@ package com.habitrpg.android.habitica.models.inventory import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmObject import io.realm.annotations.PrimaryKey -import java.util.* +import java.util.Date open class Customization : RealmObject(), BaseObject { @PrimaryKey diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Egg.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Egg.kt index efbe84606..11542e29c 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Egg.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Egg.kt @@ -2,7 +2,6 @@ package com.habitrpg.android.habitica.models.inventory import io.realm.RealmObject import io.realm.annotations.PrimaryKey -import java.util.* open class Egg : RealmObject(), Item { @PrimaryKey diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Equipment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Equipment.kt index d08b27427..0f918ea1e 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Equipment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Equipment.kt @@ -2,7 +2,6 @@ package com.habitrpg.android.habitica.models.inventory import com.google.gson.annotations.SerializedName import com.habitrpg.android.habitica.models.BaseMainObject -import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmModel import io.realm.RealmObject import io.realm.annotations.PrimaryKey diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Food.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Food.kt index a5810f493..ed9ced58f 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Food.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Food.kt @@ -2,7 +2,6 @@ package com.habitrpg.android.habitica.models.inventory import io.realm.RealmObject import io.realm.annotations.PrimaryKey -import java.util.* open class Food : RealmObject(), Item { @PrimaryKey diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/HatchingPotion.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/HatchingPotion.kt index ef5c56047..53049c56e 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/HatchingPotion.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/HatchingPotion.kt @@ -2,7 +2,6 @@ package com.habitrpg.android.habitica.models.inventory import io.realm.RealmObject import io.realm.annotations.PrimaryKey -import java.util.* open class HatchingPotion : RealmObject(), Item { @PrimaryKey diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Item.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Item.kt index 426bbbc94..31869439e 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Item.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Item.kt @@ -3,7 +3,7 @@ package com.habitrpg.android.habitica.models.inventory import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmModel import io.realm.RealmObject -import java.util.* +import java.util.Date open class ItemEvent : RealmObject(), BaseObject { var start: Date? = null diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/members/Member.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/members/Member.kt index ff3394b40..d947b4c1a 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/members/Member.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/members/Member.kt @@ -3,9 +3,15 @@ package com.habitrpg.android.habitica.models.members import com.google.gson.annotations.SerializedName import com.habitrpg.android.habitica.models.Avatar import com.habitrpg.android.habitica.models.BaseMainObject -import com.habitrpg.android.habitica.models.BaseObject import com.habitrpg.android.habitica.models.social.UserParty -import com.habitrpg.android.habitica.models.user.* +import com.habitrpg.android.habitica.models.user.Authentication +import com.habitrpg.android.habitica.models.user.Backer +import com.habitrpg.android.habitica.models.user.ContributorInfo +import com.habitrpg.android.habitica.models.user.Inbox +import com.habitrpg.android.habitica.models.user.Items +import com.habitrpg.android.habitica.models.user.Outfit +import com.habitrpg.android.habitica.models.user.Profile +import com.habitrpg.android.habitica.models.user.Stats import io.realm.RealmModel import io.realm.RealmObject import io.realm.annotations.PrimaryKey diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/promotions/FallExtraGemsHabiticaPromotion.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/promotions/FallExtraGemsHabiticaPromotion.kt index 7df6f9282..01fa95cc4 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/promotions/FallExtraGemsHabiticaPromotion.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/promotions/FallExtraGemsHabiticaPromotion.kt @@ -2,7 +2,6 @@ package com.habitrpg.android.habitica.models.promotions import android.content.Context import android.graphics.Color -import android.graphics.drawable.BitmapDrawable import android.graphics.drawable.Drawable import android.graphics.drawable.ShapeDrawable import android.view.View @@ -14,10 +13,10 @@ import com.habitrpg.android.habitica.databinding.PurchaseGemViewBinding import com.habitrpg.android.habitica.extensions.DateUtils import com.habitrpg.android.habitica.helpers.MainNavigationController import com.habitrpg.android.habitica.ui.fragments.PromoInfoFragment -import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper import com.habitrpg.android.habitica.ui.views.promo.PromoMenuView import java.text.SimpleDateFormat -import java.util.* +import java.util.Date +import java.util.Locale class FallExtraGemsHabiticaPromotion(startDate: Date?, endDate: Date?) : HabiticaPromotion() { override val identifier: String diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/promotions/GiftOneGetOneHabiticaPromotion.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/promotions/GiftOneGetOneHabiticaPromotion.kt index 6ac2b16d2..c7380da48 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/promotions/GiftOneGetOneHabiticaPromotion.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/promotions/GiftOneGetOneHabiticaPromotion.kt @@ -16,7 +16,8 @@ import com.habitrpg.android.habitica.ui.fragments.PromoInfoFragment import com.habitrpg.android.habitica.ui.fragments.purchases.SubscriptionFragment import com.habitrpg.android.habitica.ui.views.promo.PromoMenuView import java.text.SimpleDateFormat -import java.util.* +import java.util.Date +import java.util.Locale class GiftOneGetOneHabiticaPromotion(startDate: Date?, endDate: Date?) : HabiticaPromotion() { override val identifier: String diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/promotions/HabiticaPromotion.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/promotions/HabiticaPromotion.kt index 149d4362c..c6673aa41 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/promotions/HabiticaPromotion.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/promotions/HabiticaPromotion.kt @@ -7,7 +7,7 @@ import com.habitrpg.android.habitica.databinding.FragmentSubscriptionBinding import com.habitrpg.android.habitica.databinding.PurchaseGemViewBinding import com.habitrpg.android.habitica.ui.fragments.PromoInfoFragment import com.habitrpg.android.habitica.ui.views.promo.PromoMenuView -import java.util.* +import java.util.Date enum class PromoType { GEMS_AMOUNT, @@ -18,10 +18,10 @@ enum class PromoType { abstract class HabiticaPromotion { val isActive: Boolean - get() { - val now = Date() - return startDate.before(now) && endDate.after(now) - } + get() { + val now = Date() + return startDate.before(now) && endDate.after(now) + } abstract val identifier: String abstract val promoType: PromoType diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/promotions/SpookyExtraGemsHabiticaPromotion.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/promotions/SpookyExtraGemsHabiticaPromotion.kt index b8a13e891..836614ade 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/promotions/SpookyExtraGemsHabiticaPromotion.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/promotions/SpookyExtraGemsHabiticaPromotion.kt @@ -2,7 +2,6 @@ package com.habitrpg.android.habitica.models.promotions import android.content.Context import android.graphics.Color -import android.graphics.drawable.BitmapDrawable import android.graphics.drawable.Drawable import android.graphics.drawable.ShapeDrawable import android.view.View @@ -14,10 +13,10 @@ import com.habitrpg.android.habitica.databinding.PurchaseGemViewBinding import com.habitrpg.android.habitica.extensions.DateUtils import com.habitrpg.android.habitica.helpers.MainNavigationController import com.habitrpg.android.habitica.ui.fragments.PromoInfoFragment -import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper import com.habitrpg.android.habitica.ui.views.promo.PromoMenuView import java.text.SimpleDateFormat -import java.util.* +import java.util.Date +import java.util.Locale class SpookyExtraGemsHabiticaPromotion(startDate: Date?, endDate: Date?) : HabiticaPromotion() { override val identifier: String diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/promotions/Survey2021Promotion.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/promotions/Survey2021Promotion.kt index 8cd972ff2..858c99b3e 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/promotions/Survey2021Promotion.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/promotions/Survey2021Promotion.kt @@ -12,7 +12,7 @@ import com.habitrpg.android.habitica.helpers.MainNavigationController import com.habitrpg.android.habitica.ui.fragments.PromoInfoFragment import com.habitrpg.android.habitica.ui.fragments.PromoWebFragmentArgs import com.habitrpg.android.habitica.ui.views.promo.PromoMenuView -import java.util.* +import java.util.Date class Survey2021Promotion : HabiticaPromotion(), HabiticaWebPromotion { override val identifier: String diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/Challenge.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/Challenge.kt index da9e35a6c..95ce1b443 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/Challenge.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/Challenge.kt @@ -1,14 +1,13 @@ package com.habitrpg.android.habitica.models.social import com.habitrpg.android.habitica.models.BaseMainObject -import com.habitrpg.android.habitica.models.BaseObject import com.habitrpg.android.habitica.models.tasks.TasksOrder import com.habitrpg.android.habitica.models.user.User import io.realm.RealmModel import io.realm.RealmObject import io.realm.annotations.Ignore import io.realm.annotations.PrimaryKey -import java.util.* +import java.util.Date open class Challenge : RealmObject(), BaseMainObject { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/InboxConversation.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/InboxConversation.kt index 0277b0a23..4b82ce4de 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/InboxConversation.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/social/InboxConversation.kt @@ -4,7 +4,7 @@ import com.habitrpg.android.habitica.models.BaseObject import com.habitrpg.android.habitica.models.user.ContributorInfo import io.realm.RealmObject import io.realm.annotations.PrimaryKey -import java.util.* +import java.util.Date open class InboxConversation : RealmObject(), BaseObject { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/Attribute.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/Attribute.kt index d7aad22d2..91c213271 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/Attribute.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/Attribute.kt @@ -9,4 +9,4 @@ enum class Attribute constructor(val value: String) { companion object { fun from(type: String?): Attribute? = values().find { it.value == type } } -} \ No newline at end of file +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/ChecklistItem.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/ChecklistItem.kt index 43eb9e71f..7a8c538e6 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/ChecklistItem.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/ChecklistItem.kt @@ -6,7 +6,7 @@ import com.habitrpg.android.habitica.models.BaseMainObject import io.realm.RealmModel import io.realm.RealmObject import io.realm.annotations.PrimaryKey -import java.util.* +import java.util.UUID open class ChecklistItem : RealmObject, BaseMainObject, Parcelable { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/Frequency.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/Frequency.kt index e785a5aad..1055af281 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/Frequency.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/Frequency.kt @@ -9,4 +9,4 @@ enum class Frequency constructor(val value: String) { companion object { fun from(type: String?): Frequency? = values().find { it.value == type } } -} \ No newline at end of file +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/Task.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/Task.kt index ebcfa2949..09db3334b 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/Task.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/Task.kt @@ -15,7 +15,6 @@ import io.realm.annotations.Ignore import io.realm.annotations.PrimaryKey import org.json.JSONArray import org.json.JSONException -import java.util.ArrayList import java.util.Calendar import java.util.Date import java.util.GregorianCalendar @@ -285,13 +284,10 @@ open class Task : RealmObject, BaseMainObject, Parcelable { streak != task.streak -> true else -> false } - } else if (type == TaskType.TODO) { - return dueDate != task.dueDate - + return dueDate != task.dueDate } else if (type == TaskType.REWARD) { - return value != task.value - + return value != task.value } else { return false } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/TaskGroupPlan.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/TaskGroupPlan.kt index 415c34ff6..94b841a33 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/TaskGroupPlan.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/TaskGroupPlan.kt @@ -5,7 +5,7 @@ import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmList import io.realm.RealmObject import io.realm.annotations.RealmClass -import java.util.* +import java.util.Date @RealmClass(embedded = true) open class TaskGroupPlan : RealmObject(), BaseObject { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/TaskType.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/TaskType.kt index 17be3ca31..6c23a0bd3 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/TaskType.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/TaskType.kt @@ -12,4 +12,4 @@ enum class TaskType constructor(val value: String) { companion object { fun from(type: String?): TaskType? = values().find { it.value == type } } -} \ No newline at end of file +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/AdditionalSubscriptionInfo.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/AdditionalSubscriptionInfo.kt index 392e85a8f..eba4a648b 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/AdditionalSubscriptionInfo.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/AdditionalSubscriptionInfo.kt @@ -4,6 +4,6 @@ import io.realm.RealmObject import io.realm.annotations.RealmClass @RealmClass(embedded = true) -open class AdditionalSubscriptionInfo: RealmObject() { +open class AdditionalSubscriptionInfo : RealmObject() { var data: GoogleSubscriptionData? = null -} \ No newline at end of file +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/AuthenticationTimestamps.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/AuthenticationTimestamps.kt index 376b3b49d..7a0529f37 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/AuthenticationTimestamps.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/AuthenticationTimestamps.kt @@ -4,7 +4,7 @@ import com.google.gson.annotations.SerializedName import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmObject import io.realm.annotations.RealmClass -import java.util.* +import java.util.Date @RealmClass(embedded = true) open class AuthenticationTimestamps : RealmObject(), BaseObject { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Items.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Items.kt index d4d52ad47..b7561ed10 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Items.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Items.kt @@ -4,7 +4,7 @@ import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmList import io.realm.RealmObject import io.realm.annotations.RealmClass -import java.util.* +import java.util.Date @RealmClass(embedded = true) open class Items : RealmObject, BaseObject { @@ -64,10 +64,10 @@ open class Items : RealmObject, BaseObject { val hasTransformationItems: Boolean get() { return special?.any { transformationItem -> - transformationItem.key == ("seafoam") && transformationItem.numberOwned > 0|| - transformationItem.key == ("shinySeed") && transformationItem.numberOwned > 0|| - transformationItem.key == ("snowball") && transformationItem.numberOwned > 0|| - transformationItem.key == ("spookySparkles") && transformationItem.numberOwned > 0 + transformationItem.key == ("seafoam") && transformationItem.numberOwned > 0 || + transformationItem.key == ("shinySeed") && transformationItem.numberOwned > 0 || + transformationItem.key == ("snowball") && transformationItem.numberOwned > 0 || + transformationItem.key == ("spookySparkles") && transformationItem.numberOwned > 0 } ?: false } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Preferences.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Preferences.kt index fa2b155be..770c8dfd5 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Preferences.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/Preferences.kt @@ -5,7 +5,6 @@ import com.habitrpg.android.habitica.models.AvatarPreferences import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmObject import io.realm.annotations.RealmClass -import java.util.* @RealmClass(embedded = true) open class Preferences : RealmObject(), AvatarPreferences, BaseObject { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/SubscriptionPlan.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/SubscriptionPlan.kt index 99719ccf7..9fd860ed1 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/SubscriptionPlan.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/SubscriptionPlan.kt @@ -4,7 +4,7 @@ import com.google.gson.annotations.SerializedName import com.habitrpg.android.habitica.models.BaseObject import io.realm.RealmObject import io.realm.annotations.RealmClass -import java.util.* +import java.util.Date @RealmClass(embedded = true) open class SubscriptionPlan : RealmObject(), BaseObject { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/User.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/User.kt index 930949462..c0f5b74f6 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/User.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/user/User.kt @@ -2,7 +2,12 @@ package com.habitrpg.android.habitica.models.user import com.google.gson.annotations.SerializedName import com.habitrpg.android.habitica.R -import com.habitrpg.android.habitica.models.* +import com.habitrpg.android.habitica.models.Avatar +import com.habitrpg.android.habitica.models.BaseMainObject +import com.habitrpg.android.habitica.models.PushDevice +import com.habitrpg.android.habitica.models.QuestAchievement +import com.habitrpg.android.habitica.models.Tag +import com.habitrpg.android.habitica.models.VersionedObject import com.habitrpg.android.habitica.models.invitations.Invitations import com.habitrpg.android.habitica.models.social.ChallengeMembership import com.habitrpg.android.habitica.models.social.UserParty @@ -12,7 +17,7 @@ import io.realm.RealmList import io.realm.RealmObject import io.realm.annotations.Ignore import io.realm.annotations.PrimaryKey -import java.util.* +import java.util.Date open class User : RealmObject(), BaseMainObject, Avatar, VersionedObject { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/modules/ApiModule.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/modules/ApiModule.kt index c98cc4b0b..c99fc0152 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/modules/ApiModule.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/modules/ApiModule.kt @@ -1,20 +1,20 @@ package com.habitrpg.android.habitica.modules import android.content.Context -import com.habitrpg.android.habitica.data.implementation.ApiClientImpl.Companion.createGsonFactory import android.content.SharedPreferences -import com.habitrpg.android.habitica.helpers.KeyHelper import com.habitrpg.android.habitica.api.HostConfig -import retrofit2.converter.gson.GsonConverterFactory +import com.habitrpg.android.habitica.api.MaintenanceApiService +import com.habitrpg.android.habitica.data.ApiClient import com.habitrpg.android.habitica.data.implementation.ApiClientImpl +import com.habitrpg.android.habitica.data.implementation.ApiClientImpl.Companion.createGsonFactory +import com.habitrpg.android.habitica.helpers.KeyHelper import com.habitrpg.android.habitica.helpers.NotificationsManager import com.habitrpg.android.habitica.proxy.AnalyticsManager -import com.habitrpg.android.habitica.data.ApiClient -import com.habitrpg.android.habitica.api.MaintenanceApiService import dagger.Module import dagger.Provides import retrofit2.Retrofit import retrofit2.adapter.rxjava3.RxJava3CallAdapterFactory +import retrofit2.converter.gson.GsonConverterFactory import java.lang.ref.WeakReference import javax.inject.Singleton diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/modules/AppModule.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/modules/AppModule.kt index ddb99448a..bba74b3b5 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/modules/AppModule.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/modules/AppModule.kt @@ -7,13 +7,15 @@ import android.content.res.Resources import androidx.preference.PreferenceManager import com.habitrpg.android.habitica.data.ApiClient import com.habitrpg.android.habitica.data.ContentRepository -import com.habitrpg.android.habitica.data.UserRepository import com.habitrpg.android.habitica.executors.PostExecutionThread import com.habitrpg.android.habitica.executors.UIThread -import com.habitrpg.android.habitica.helpers.* +import com.habitrpg.android.habitica.helpers.AppConfigManager +import com.habitrpg.android.habitica.helpers.KeyHelper import com.habitrpg.android.habitica.helpers.KeyHelper.Companion.getInstance +import com.habitrpg.android.habitica.helpers.SoundFileLoader +import com.habitrpg.android.habitica.helpers.SoundManager +import com.habitrpg.android.habitica.helpers.TaskFilterHelper import com.habitrpg.android.habitica.helpers.notifications.PushNotificationManager -import com.habitrpg.android.habitica.proxy.AnalyticsManager import com.habitrpg.shared.habitica.HLogger import dagger.Module import dagger.Provides diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/modules/RepositoryModule.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/modules/RepositoryModule.kt index f7943388d..eba641a84 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/modules/RepositoryModule.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/modules/RepositoryModule.kt @@ -1,11 +1,11 @@ package com.habitrpg.android.habitica.modules import android.content.Context -import com.habitrpg.android.habitica.data.local.ContentLocalRepository -import com.habitrpg.android.habitica.data.local.implementation.RealmContentLocalRepository import com.habitrpg.android.habitica.data.ApiClient import com.habitrpg.android.habitica.data.ContentRepository import com.habitrpg.android.habitica.data.implementation.ContentRepositoryImpl +import com.habitrpg.android.habitica.data.local.ContentLocalRepository +import com.habitrpg.android.habitica.data.local.implementation.RealmContentLocalRepository import dagger.Module import dagger.Provides import io.realm.Realm @@ -34,4 +34,4 @@ open class RepositoryModule { context ) } -} \ No newline at end of file +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/modules/UserRepositoryModule.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/modules/UserRepositoryModule.kt index a23592e4f..c30c7d511 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/modules/UserRepositoryModule.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/modules/UserRepositoryModule.kt @@ -1,56 +1,54 @@ package com.habitrpg.android.habitica.modules import android.content.Context -import com.habitrpg.android.habitica.data.SetupCustomizationRepository -import com.habitrpg.android.habitica.data.implementation.SetupCustomizationRepositoryImpl -import com.habitrpg.android.habitica.data.local.TaskLocalRepository -import com.habitrpg.android.habitica.data.local.implementation.RealmTaskLocalRepository import com.habitrpg.android.habitica.data.ApiClient -import com.habitrpg.android.habitica.modules.AppModule -import com.habitrpg.android.habitica.helpers.AppConfigManager -import com.habitrpg.android.habitica.proxy.AnalyticsManager -import com.habitrpg.android.habitica.data.TaskRepository -import com.habitrpg.android.habitica.data.implementation.TaskRepositoryImpl -import com.habitrpg.android.habitica.data.local.TagLocalRepository -import com.habitrpg.android.habitica.data.local.implementation.RealmTagLocalRepository -import com.habitrpg.android.habitica.data.TagRepository -import com.habitrpg.android.habitica.data.implementation.TagRepositoryImpl -import com.habitrpg.android.habitica.data.local.ChallengeLocalRepository -import com.habitrpg.android.habitica.data.local.implementation.RealmChallengeLocalRepository import com.habitrpg.android.habitica.data.ChallengeRepository -import com.habitrpg.android.habitica.data.implementation.ChallengeRepositoryImpl -import com.habitrpg.android.habitica.data.local.UserLocalRepository -import com.habitrpg.android.habitica.data.local.implementation.RealmUserLocalRepository -import com.habitrpg.android.habitica.data.UserRepository -import com.habitrpg.android.habitica.data.implementation.UserRepositoryImpl -import com.habitrpg.android.habitica.data.local.SocialLocalRepository -import com.habitrpg.android.habitica.data.local.implementation.RealmSocialLocalRepository -import com.habitrpg.android.habitica.data.SocialRepository -import com.habitrpg.android.habitica.data.implementation.SocialRepositoryImpl -import com.habitrpg.android.habitica.data.local.InventoryLocalRepository -import com.habitrpg.android.habitica.data.local.implementation.RealmInventoryLocalRepository -import com.habitrpg.android.habitica.data.InventoryRepository -import com.habitrpg.android.habitica.data.implementation.InventoryRepositoryImpl -import com.habitrpg.android.habitica.data.local.FAQLocalRepository -import com.habitrpg.android.habitica.data.local.implementation.RealmFAQLocalRepository -import com.habitrpg.android.habitica.data.FAQRepository -import com.habitrpg.android.habitica.data.implementation.FAQRepositoryImpl -import com.habitrpg.android.habitica.data.local.TutorialLocalRepository -import com.habitrpg.android.habitica.data.local.implementation.RealmTutorialLocalRepository -import com.habitrpg.android.habitica.data.TutorialRepository -import com.habitrpg.android.habitica.data.implementation.TutorialRepositoryImpl -import com.habitrpg.android.habitica.data.local.CustomizationLocalRepository -import com.habitrpg.android.habitica.data.local.implementation.RealmCustomizationLocalRepository import com.habitrpg.android.habitica.data.CustomizationRepository +import com.habitrpg.android.habitica.data.FAQRepository +import com.habitrpg.android.habitica.data.InventoryRepository +import com.habitrpg.android.habitica.data.SetupCustomizationRepository +import com.habitrpg.android.habitica.data.SocialRepository +import com.habitrpg.android.habitica.data.TagRepository +import com.habitrpg.android.habitica.data.TaskRepository +import com.habitrpg.android.habitica.data.TutorialRepository +import com.habitrpg.android.habitica.data.UserRepository +import com.habitrpg.android.habitica.data.implementation.ChallengeRepositoryImpl import com.habitrpg.android.habitica.data.implementation.CustomizationRepositoryImpl +import com.habitrpg.android.habitica.data.implementation.FAQRepositoryImpl +import com.habitrpg.android.habitica.data.implementation.InventoryRepositoryImpl +import com.habitrpg.android.habitica.data.implementation.SetupCustomizationRepositoryImpl +import com.habitrpg.android.habitica.data.implementation.SocialRepositoryImpl +import com.habitrpg.android.habitica.data.implementation.TagRepositoryImpl +import com.habitrpg.android.habitica.data.implementation.TaskRepositoryImpl +import com.habitrpg.android.habitica.data.implementation.TutorialRepositoryImpl +import com.habitrpg.android.habitica.data.implementation.UserRepositoryImpl +import com.habitrpg.android.habitica.data.local.ChallengeLocalRepository +import com.habitrpg.android.habitica.data.local.CustomizationLocalRepository +import com.habitrpg.android.habitica.data.local.FAQLocalRepository +import com.habitrpg.android.habitica.data.local.InventoryLocalRepository +import com.habitrpg.android.habitica.data.local.SocialLocalRepository +import com.habitrpg.android.habitica.data.local.TagLocalRepository +import com.habitrpg.android.habitica.data.local.TaskLocalRepository +import com.habitrpg.android.habitica.data.local.TutorialLocalRepository +import com.habitrpg.android.habitica.data.local.UserLocalRepository +import com.habitrpg.android.habitica.data.local.implementation.RealmChallengeLocalRepository +import com.habitrpg.android.habitica.data.local.implementation.RealmCustomizationLocalRepository +import com.habitrpg.android.habitica.data.local.implementation.RealmFAQLocalRepository +import com.habitrpg.android.habitica.data.local.implementation.RealmInventoryLocalRepository +import com.habitrpg.android.habitica.data.local.implementation.RealmSocialLocalRepository +import com.habitrpg.android.habitica.data.local.implementation.RealmTagLocalRepository +import com.habitrpg.android.habitica.data.local.implementation.RealmTaskLocalRepository +import com.habitrpg.android.habitica.data.local.implementation.RealmTutorialLocalRepository +import com.habitrpg.android.habitica.data.local.implementation.RealmUserLocalRepository +import com.habitrpg.android.habitica.helpers.AppConfigManager import com.habitrpg.android.habitica.helpers.PurchaseHandler import com.habitrpg.android.habitica.helpers.UserScope +import com.habitrpg.android.habitica.proxy.AnalyticsManager import com.habitrpg.android.habitica.ui.viewmodels.MainUserViewModel import dagger.Module import dagger.Provides import io.realm.Realm import javax.inject.Named -import javax.inject.Singleton @Module class UserRepositoryModule { @@ -210,4 +208,4 @@ class UserRepositoryModule { fun providesPurchaseHandler(context: Context, analyticsManager: AnalyticsManager, apiClient: ApiClient, userViewModel: MainUserViewModel): PurchaseHandler { return PurchaseHandler(context, analyticsManager, apiClient, userViewModel) } -} \ No newline at end of file +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/prefs/TimePreference.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/prefs/TimePreference.kt index fb2900833..4142fbd8e 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/prefs/TimePreference.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/prefs/TimePreference.kt @@ -5,7 +5,8 @@ import android.content.res.TypedArray import android.util.AttributeSet import androidx.preference.DialogPreference import java.text.DateFormat -import java.util.* +import java.util.Calendar +import java.util.Locale class TimePreference(ctxt: Context, attrs: AttributeSet?) : DialogPreference(ctxt, attrs) { private var timeval: String? = null @@ -54,7 +55,6 @@ class TimePreference(ctxt: Context, attrs: AttributeSet?) : DialogPreference(ctx fun getMinute(timeval: String?): Int { return timeval?.split(":")?.get(1)?.toInt() ?: 0 - } } @@ -62,4 +62,4 @@ class TimePreference(ctxt: Context, attrs: AttributeSet?) : DialogPreference(ctx positiveButtonText = "Set" negativeButtonText = "Cancel" } -} \ No newline at end of file +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/receivers/LocalNotificationActionReceiver.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/receivers/LocalNotificationActionReceiver.kt index 5bd4483ff..5d0e87eb0 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/receivers/LocalNotificationActionReceiver.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/receivers/LocalNotificationActionReceiver.kt @@ -5,7 +5,6 @@ import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.text.Spannable -import android.text.SpannableStringBuilder import android.widget.Toast import androidx.core.app.NotificationManagerCompat import androidx.core.app.RemoteInput diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/receivers/NotificationPublisher.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/receivers/NotificationPublisher.kt index 137ab03f2..27925ff0b 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/receivers/NotificationPublisher.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/receivers/NotificationPublisher.kt @@ -22,7 +22,9 @@ import com.habitrpg.android.habitica.models.tasks.TaskType import com.habitrpg.android.habitica.models.user.User import com.habitrpg.android.habitica.ui.activities.MainActivity import io.reactivex.rxjava3.functions.BiFunction -import java.util.* +import java.util.Calendar +import java.util.Date +import java.util.Random import javax.inject.Inject @Suppress("DEPRECATION") diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/receivers/TaskReceiver.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/receivers/TaskReceiver.kt index 13fee1df7..f8bf24d40 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/receivers/TaskReceiver.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/receivers/TaskReceiver.kt @@ -21,7 +21,6 @@ import com.habitrpg.android.habitica.ui.activities.MainActivity import com.habitrpg.shared.habitica.HLogger import com.habitrpg.shared.habitica.LogLevel import io.reactivex.rxjava3.functions.Consumer -import java.util.* import javax.inject.Inject class TaskReceiver : BroadcastReceiver() { @@ -69,8 +68,10 @@ class TaskReceiver : BroadcastReceiver() { var notificationBuilder = NotificationCompat.Builder(context, "default") .setSmallIcon(R.drawable.ic_gryphon_white) .setContentTitle(task.text) - .setStyle(NotificationCompat.BigTextStyle() - .bigText(task.notes)) + .setStyle( + NotificationCompat.BigTextStyle() + .bigText(task.notes) + ) .setPriority(NotificationCompat.PRIORITY_MAX) .setSound(soundUri) .setAutoCancel(true) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarView.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarView.kt index b3166efa8..4ed7e44d0 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarView.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarView.kt @@ -1,7 +1,12 @@ package com.habitrpg.android.habitica.ui import android.content.Context -import android.graphics.* +import android.graphics.Bitmap +import android.graphics.Canvas +import android.graphics.Matrix +import android.graphics.PointF +import android.graphics.Rect +import android.graphics.RectF import android.graphics.drawable.Drawable import android.text.TextUtils import android.util.AttributeSet @@ -20,7 +25,8 @@ import com.habitrpg.android.habitica.helpers.AppConfigManager import com.habitrpg.android.habitica.models.Avatar import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils import io.reactivex.rxjava3.functions.Consumer -import java.util.* +import java.util.Date +import java.util.EnumMap import java.util.concurrent.atomic.AtomicInteger class AvatarView : FrameLayout { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarWithBarsViewModel.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarWithBarsViewModel.kt index e51369eb5..ba926b04b 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarWithBarsViewModel.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarWithBarsViewModel.kt @@ -16,7 +16,7 @@ import com.habitrpg.android.habitica.models.user.Stats import com.habitrpg.android.habitica.models.user.User import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper import io.reactivex.rxjava3.disposables.Disposable -import java.util.* +import java.util.Locale import kotlin.math.floor class AvatarWithBarsViewModel(private val context: Context, private val binding: AvatarWithBarsBinding, userRepository: UserRepository? = null) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/AddTaskWidgetActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/AddTaskWidgetActivity.kt index eff0dc4f5..dca84656c 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/AddTaskWidgetActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/AddTaskWidgetActivity.kt @@ -8,7 +8,6 @@ import androidx.appcompat.app.AppCompatActivity import androidx.core.content.edit import androidx.preference.PreferenceManager import com.habitrpg.android.habitica.databinding.WidgetConfigureAddTaskBinding -import com.habitrpg.android.habitica.models.tasks.Task import com.habitrpg.android.habitica.models.tasks.TaskType import com.habitrpg.android.habitica.widget.AddTaskWidgetProvider diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/AdventureGuideActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/AdventureGuideActivity.kt index 631a95038..939e74e5b 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/AdventureGuideActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/AdventureGuideActivity.kt @@ -11,7 +11,6 @@ import androidx.core.app.NavUtils import androidx.core.content.ContextCompat import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.components.UserComponent -import com.habitrpg.android.habitica.data.UserRepository import com.habitrpg.android.habitica.databinding.ActivityAdventureGuideBinding import com.habitrpg.android.habitica.databinding.AdventureGuideItemBinding import com.habitrpg.android.habitica.extensions.fromHtml @@ -19,7 +18,6 @@ import com.habitrpg.android.habitica.helpers.AmplitudeManager import com.habitrpg.android.habitica.helpers.RxErrorHandler import com.habitrpg.android.habitica.models.user.User import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils -import javax.inject.Inject class AdventureGuideActivity : BaseActivity() { private lateinit var binding: ActivityAdventureGuideBinding diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/BaseActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/BaseActivity.kt index fc9221a88..d3ce786ea 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/BaseActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/BaseActivity.kt @@ -39,7 +39,8 @@ import com.habitrpg.android.habitica.ui.helpers.ToolbarColorHelper import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog import com.habitrpg.android.habitica.userpicture.BitmapUtils import io.reactivex.rxjava3.disposables.CompositeDisposable -import java.util.* +import java.util.Date +import java.util.Locale import javax.inject.Inject abstract class BaseActivity : AppCompatActivity() { @@ -94,14 +95,16 @@ abstract class BaseActivity : AppCompatActivity() { injectActivity(HabiticaBaseApplication.userComponent) setContentView(getContentView()) compositeSubscription = CompositeDisposable() - compositeSubscription.add(notificationsManager.displayNotificationEvents.subscribe( - { - if (ShowNotificationInteractor(this, lifecycleScope).handleNotification(it)) { - compositeSubscription.add(userRepository.retrieveUser(false, true).subscribeWithErrorHandler {}) - } - }, - RxErrorHandler.handleEmptyError() - )) + compositeSubscription.add( + notificationsManager.displayNotificationEvents.subscribe( + { + if (ShowNotificationInteractor(this, lifecycleScope).handleNotification(it)) { + compositeSubscription.add(userRepository.retrieveUser(false, true).subscribeWithErrorHandler {}) + } + }, + RxErrorHandler.handleEmptyError() + ) + ) } override fun onRestart() { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ChallengeFormActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ChallengeFormActivity.kt index 496dbd52d..aaaaac7f9 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ChallengeFormActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ChallengeFormActivity.kt @@ -5,7 +5,11 @@ import android.content.Context import android.content.Intent import android.graphics.drawable.ColorDrawable import android.os.Bundle -import android.view.* +import android.view.Menu +import android.view.MenuItem +import android.view.MotionEvent +import android.view.View +import android.view.ViewGroup import android.widget.AdapterView import android.widget.ArrayAdapter import android.widget.EditText @@ -18,7 +22,6 @@ import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.components.UserComponent import com.habitrpg.android.habitica.data.ChallengeRepository import com.habitrpg.android.habitica.data.SocialRepository -import com.habitrpg.android.habitica.data.UserRepository import com.habitrpg.android.habitica.databinding.ActivityCreateChallengeBinding import com.habitrpg.android.habitica.extensions.addCloseButton import com.habitrpg.android.habitica.extensions.getThemeColor @@ -40,8 +43,7 @@ import io.reactivex.rxjava3.core.Flowable import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay import kotlinx.coroutines.launch -import java.lang.NumberFormatException -import java.util.* +import java.util.UUID import javax.inject.Inject import javax.inject.Named diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ClassSelectionActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ClassSelectionActivity.kt index 3ff4fc12b..687db0ddf 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ClassSelectionActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ClassSelectionActivity.kt @@ -11,15 +11,17 @@ import androidx.core.content.ContextCompat import androidx.navigation.navArgs import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.components.UserComponent -import com.habitrpg.android.habitica.data.UserRepository import com.habitrpg.android.habitica.databinding.ActivityClassSelectionBinding import com.habitrpg.android.habitica.helpers.RxErrorHandler -import com.habitrpg.android.habitica.models.user.* +import com.habitrpg.android.habitica.models.user.Gear +import com.habitrpg.android.habitica.models.user.Items +import com.habitrpg.android.habitica.models.user.Outfit +import com.habitrpg.android.habitica.models.user.Preferences +import com.habitrpg.android.habitica.models.user.User import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaProgressDialog import io.reactivex.rxjava3.functions.Consumer -import javax.inject.Inject class ClassSelectionActivity : BaseActivity(), Consumer { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/FixCharacterValuesActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/FixCharacterValuesActivity.kt index 7647f434a..c0a4b8536 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/FixCharacterValuesActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/FixCharacterValuesActivity.kt @@ -107,81 +107,80 @@ class FixCharacterValuesActivity : BaseActivity() { .flatMap { repository.retrieveUser(false, true, true) } .subscribe( {}, RxErrorHandler.handleEmptyError(), - { - dialog?.dismiss() - finish() - } - ) + { + dialog?.dismiss() + finish() + } + ) + ) + return true + } + + return super.onOptionsItemSelected(item) + } + + private var user: User? = null + set(value) { + field = value + if (value != null) { + updateFields(value) + } + } + + private fun updateFields(user: User) { + val stats = user.stats ?: return + binding.healthEditText.setText(stats.hp.toString()) + binding.experienceEditText.setText(stats.exp.toString()) + binding.goldEditText.setText(stats.gp.toString()) + binding.manaEditText.setText(stats.mp.toString()) + binding.levelEditText.setText(stats.lvl.toString()) + binding.streakEditText.setText(user.streakCount.toString()) + + when (stats.habitClass) { + Stats.WARRIOR -> { + setIconBackground( + binding.levelIconBackgroundView, + ContextCompat.getColor(this, R.color.red_500) ) - return true + binding.levelIconView.setImageBitmap(HabiticaIconsHelper.imageOfWarriorLightBg()) } - - return super.onOptionsItemSelected(item) - } - - private var user: User? = null - set(value) { - field = value - if (value != null) { - updateFields(value) - } + Stats.MAGE -> { + setIconBackground( + binding.levelIconBackgroundView, + ContextCompat.getColor(this, R.color.blue_500) + ) + binding.levelIconView.setImageBitmap(HabiticaIconsHelper.imageOfMageLightBg()) } - - private fun updateFields(user: User) { - val stats = user.stats ?: return - binding.healthEditText.setText(stats.hp.toString()) - binding.experienceEditText.setText(stats.exp.toString()) - binding.goldEditText.setText(stats.gp.toString()) - binding.manaEditText.setText(stats.mp.toString()) - binding.levelEditText.setText(stats.lvl.toString()) - binding.streakEditText.setText(user.streakCount.toString()) - - when (stats.habitClass) { - Stats.WARRIOR -> { - setIconBackground( - binding.levelIconBackgroundView, - ContextCompat.getColor(this, R.color.red_500) - ) - binding.levelIconView.setImageBitmap(HabiticaIconsHelper.imageOfWarriorLightBg()) - } - Stats.MAGE -> { - setIconBackground( - binding.levelIconBackgroundView, - ContextCompat.getColor(this, R.color.blue_500) - ) - binding.levelIconView.setImageBitmap(HabiticaIconsHelper.imageOfMageLightBg()) - } - Stats.HEALER -> { - setIconBackground( - binding.levelIconBackgroundView, - ContextCompat.getColor(this, R.color.yellow_500) - ) - binding.levelIconView.setImageBitmap(HabiticaIconsHelper.imageOfHealerLightBg()) - } - Stats.ROGUE -> { - setIconBackground( - binding.levelIconBackgroundView, - ContextCompat.getColor(this, R.color.brand_500) - ) - binding.levelIconView.setImageBitmap(HabiticaIconsHelper.imageOfRogueLightBg()) - } + Stats.HEALER -> { + setIconBackground( + binding.levelIconBackgroundView, + ContextCompat.getColor(this, R.color.yellow_500) + ) + binding.levelIconView.setImageBitmap(HabiticaIconsHelper.imageOfHealerLightBg()) } - } - - private fun setIconBackground(view: View, color: Int) { - val backgroundDrawable = ContextCompat.getDrawable(this, R.drawable.layout_rounded_bg) - backgroundDrawable?.setTintWith(color, PorterDuff.Mode.MULTIPLY) - backgroundDrawable?.alpha = 50 - view.background = backgroundDrawable - } - - private fun EditText.getDoubleValue(): Double { - val stringValue = this.text.toString() - return try { - stringValue.toDouble() - } catch (_: NumberFormatException) { - 0.0 + Stats.ROGUE -> { + setIconBackground( + binding.levelIconBackgroundView, + ContextCompat.getColor(this, R.color.brand_500) + ) + binding.levelIconView.setImageBitmap(HabiticaIconsHelper.imageOfRogueLightBg()) } } } - \ No newline at end of file + + private fun setIconBackground(view: View, color: Int) { + val backgroundDrawable = ContextCompat.getDrawable(this, R.drawable.layout_rounded_bg) + backgroundDrawable?.setTintWith(color, PorterDuff.Mode.MULTIPLY) + backgroundDrawable?.alpha = 50 + view.background = backgroundDrawable + } + + private fun EditText.getDoubleValue(): Double { + val stringValue = this.text.toString() + return try { + stringValue.toDouble() + } catch (_: NumberFormatException) { + 0.0 + } + } +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/FullProfileActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/FullProfileActivity.kt index 316608f86..450444f20 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/FullProfileActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/FullProfileActivity.kt @@ -3,9 +3,14 @@ package com.habitrpg.android.habitica.ui.activities import android.content.Context import android.graphics.Typeface import android.os.Bundle -import android.text.method.LinkMovementMethod -import android.view.* -import android.widget.* +import android.view.Menu +import android.view.MenuItem +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TableLayout +import android.widget.TableRow +import android.widget.TextView import androidx.core.content.ContextCompat import androidx.core.os.bundleOf import coil.load @@ -14,7 +19,6 @@ import com.habitrpg.android.habitica.components.UserComponent import com.habitrpg.android.habitica.data.ApiClient import com.habitrpg.android.habitica.data.InventoryRepository import com.habitrpg.android.habitica.data.SocialRepository -import com.habitrpg.android.habitica.data.UserRepository import com.habitrpg.android.habitica.databinding.ActivityFullProfileBinding import com.habitrpg.android.habitica.extensions.addCancelButton import com.habitrpg.android.habitica.extensions.getThemeColor @@ -40,7 +44,6 @@ import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.delay import kotlinx.coroutines.launch import java.text.SimpleDateFormat -import java.util.* import javax.inject.Inject import kotlin.math.floor import kotlin.math.min diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GemPurchaseActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GemPurchaseActivity.kt index ab62ad892..76183fa63 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GemPurchaseActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GemPurchaseActivity.kt @@ -1,17 +1,12 @@ package com.habitrpg.android.habitica.ui.activities import android.os.Bundle -import android.view.MenuItem import androidx.appcompat.widget.Toolbar import androidx.fragment.app.Fragment import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.components.UserComponent -import com.habitrpg.android.habitica.data.UserRepository -import com.habitrpg.android.habitica.helpers.PurchaseHandler -import com.habitrpg.android.habitica.proxy.AnalyticsManager import com.habitrpg.android.habitica.ui.fragments.purchases.GemsPurchaseFragment import com.habitrpg.android.habitica.ui.fragments.purchases.SubscriptionFragment -import javax.inject.Inject class GemPurchaseActivity : PurchaseActivity() { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GiftGemsActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GiftGemsActivity.kt index 1aba66ce1..5f8904a62 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GiftGemsActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GiftGemsActivity.kt @@ -9,13 +9,11 @@ import com.google.android.material.tabs.TabLayoutMediator import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.components.UserComponent import com.habitrpg.android.habitica.data.SocialRepository -import com.habitrpg.android.habitica.data.UserRepository import com.habitrpg.android.habitica.databinding.ActivityGiftGemsBinding import com.habitrpg.android.habitica.helpers.AppConfigManager import com.habitrpg.android.habitica.helpers.PurchaseHandler import com.habitrpg.android.habitica.helpers.RxErrorHandler import com.habitrpg.android.habitica.models.members.Member -import com.habitrpg.android.habitica.proxy.AnalyticsManager import com.habitrpg.android.habitica.ui.fragments.purchases.GiftBalanceGemsFragment import com.habitrpg.android.habitica.ui.fragments.purchases.GiftPurchaseGemsFragment import com.habitrpg.android.habitica.ui.views.CurrencyView diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GiftSubscriptionActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GiftSubscriptionActivity.kt index e04e379de..6c7fa3e30 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GiftSubscriptionActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GiftSubscriptionActivity.kt @@ -9,13 +9,10 @@ import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.components.UserComponent import com.habitrpg.android.habitica.data.SocialRepository import com.habitrpg.android.habitica.databinding.ActivityGiftSubscriptionBinding -import com.habitrpg.android.habitica.extensions.addOkButton import com.habitrpg.android.habitica.helpers.AppConfigManager import com.habitrpg.android.habitica.helpers.PurchaseHandler import com.habitrpg.android.habitica.helpers.PurchaseTypes import com.habitrpg.android.habitica.helpers.RxErrorHandler -import com.habitrpg.android.habitica.proxy.AnalyticsManager -import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog import com.habitrpg.android.habitica.ui.views.subscriptions.SubscriptionOptionView import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers @@ -150,5 +147,4 @@ class GiftSubscriptionActivity : PurchaseActivity() { purchaseHandler.purchase(this, sku) } } - } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GroupInviteActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GroupInviteActivity.kt index 582067e97..b75dedd99 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GroupInviteActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GroupInviteActivity.kt @@ -12,7 +12,6 @@ import com.google.android.material.tabs.TabLayoutMediator import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.components.UserComponent import com.habitrpg.android.habitica.data.SocialRepository -import com.habitrpg.android.habitica.data.UserRepository import com.habitrpg.android.habitica.databinding.ActivityPartyInviteBinding import com.habitrpg.android.habitica.extensions.runDelayed import com.habitrpg.android.habitica.modules.AppModule diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GuidelinesActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GuidelinesActivity.kt index 8fcf7bf5c..ac1a8ea77 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GuidelinesActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GuidelinesActivity.kt @@ -7,7 +7,11 @@ import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.components.UserComponent import com.habitrpg.android.habitica.helpers.RxErrorHandler import com.habitrpg.android.habitica.ui.helpers.setMarkdown -import okhttp3.* +import okhttp3.Call +import okhttp3.Callback +import okhttp3.OkHttpClient +import okhttp3.Request +import okhttp3.Response import java.io.BufferedReader import java.io.IOException import java.io.InputStreamReader diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/LoginActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/LoginActivity.kt index 35a0b44f6..c3706bcfb 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/LoginActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/LoginActivity.kt @@ -1,7 +1,11 @@ package com.habitrpg.android.habitica.ui.activities import android.accounts.AccountManager -import android.animation.* +import android.animation.Animator +import android.animation.AnimatorListenerAdapter +import android.animation.AnimatorSet +import android.animation.ObjectAnimator +import android.animation.ValueAnimator import android.app.Activity import android.content.Intent import android.content.SharedPreferences @@ -21,17 +25,17 @@ import android.widget.LinearLayout import androidx.activity.result.contract.ActivityResultContracts import androidx.core.content.ContextCompat import androidx.preference.PreferenceManager -import com.google.android.gms.common.* import com.google.firebase.analytics.FirebaseAnalytics import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.components.UserComponent import com.habitrpg.android.habitica.data.ApiClient -import com.habitrpg.android.habitica.data.UserRepository import com.habitrpg.android.habitica.databinding.ActivityLoginBinding import com.habitrpg.android.habitica.extensions.addCancelButton import com.habitrpg.android.habitica.extensions.addOkButton import com.habitrpg.android.habitica.extensions.updateStatusBarColor -import com.habitrpg.android.habitica.helpers.* +import com.habitrpg.android.habitica.helpers.AmplitudeManager +import com.habitrpg.android.habitica.helpers.AppConfigManager +import com.habitrpg.android.habitica.helpers.RxErrorHandler import com.habitrpg.android.habitica.models.auth.UserAuthResponse import com.habitrpg.android.habitica.models.user.User import com.habitrpg.android.habitica.ui.helpers.dismissKeyboard @@ -54,7 +58,6 @@ class LoginActivity : BaseActivity() { private var isRegistering: Boolean = false private var isShowingForm: Boolean = false - private val loginClick = View.OnClickListener { binding.PBAsyncTask.visibility = View.VISIBLE if (isRegistering) { @@ -229,10 +232,11 @@ class LoginActivity : BaseActivity() { private fun handleAuthResponse(response: UserAuthResponse) { viewModel.handleAuthResponse(response) - compositeSubscription.add(userRepository.retrieveUser(true) - .subscribe({ - handleAuthResponse(it, response.newUser) - }, RxErrorHandler.handleEmptyError()) + compositeSubscription.add( + userRepository.retrieveUser(true) + .subscribe({ + handleAuthResponse(it, response.newUser) + }, RxErrorHandler.handleEmptyError()) ) } @@ -302,7 +306,8 @@ class LoginActivity : BaseActivity() { } private val recoverFromPlayServicesErrorResult = registerForActivityResult( - ActivityResultContracts.StartActivityForResult()) { + ActivityResultContracts.StartActivityForResult() + ) { if (it.resultCode != Activity.RESULT_CANCELED) { viewModel.handleGoogleLoginResult(this, null) { user, isNew -> handleAuthResponse(user, isNew) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.kt index dd692bc20..bb8224e9f 100755 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.kt @@ -7,13 +7,12 @@ import android.content.ComponentName import android.content.Intent import android.content.pm.PackageManager import android.content.res.Configuration -import android.graphics.Bitmap -import android.graphics.Canvas import android.os.Build import android.os.Bundle -import android.view.* -import android.widget.FrameLayout -import android.widget.ImageView +import android.view.KeyEvent +import android.view.MenuItem +import android.view.View +import android.view.ViewGroup import androidx.activity.viewModels import androidx.appcompat.app.ActionBarDrawerToggle import androidx.drawerlayout.widget.DrawerLayout @@ -23,20 +22,28 @@ import androidx.navigation.fragment.NavHostFragment import com.google.firebase.perf.FirebasePerformance import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.components.UserComponent -import com.habitrpg.android.habitica.data.* +import com.habitrpg.android.habitica.data.ApiClient +import com.habitrpg.android.habitica.data.InventoryRepository +import com.habitrpg.android.habitica.data.TaskRepository import com.habitrpg.android.habitica.data.local.UserQuestStatus import com.habitrpg.android.habitica.databinding.ActivityMainBinding import com.habitrpg.android.habitica.databinding.DialogFaintBinding -import com.habitrpg.android.habitica.extensions.* -import com.habitrpg.android.habitica.helpers.* +import com.habitrpg.android.habitica.extensions.dpToPx +import com.habitrpg.android.habitica.extensions.getThemeColor +import com.habitrpg.android.habitica.extensions.hideKeyboard +import com.habitrpg.android.habitica.extensions.isUsingNightModeResources +import com.habitrpg.android.habitica.extensions.subscribeWithErrorHandler +import com.habitrpg.android.habitica.extensions.updateStatusBarColor +import com.habitrpg.android.habitica.helpers.AmplitudeManager +import com.habitrpg.android.habitica.helpers.AppConfigManager +import com.habitrpg.android.habitica.helpers.MainNavigationController +import com.habitrpg.android.habitica.helpers.NotificationOpenHandler +import com.habitrpg.android.habitica.helpers.RxErrorHandler +import com.habitrpg.android.habitica.helpers.SoundManager import com.habitrpg.android.habitica.interactors.CheckClassSelectionUseCase import com.habitrpg.android.habitica.interactors.DisplayItemDropUseCase import com.habitrpg.android.habitica.interactors.NotifyUserUseCase import com.habitrpg.android.habitica.models.TutorialStep -import com.habitrpg.android.habitica.models.inventory.Egg -import com.habitrpg.android.habitica.models.inventory.Food -import com.habitrpg.android.habitica.models.inventory.HatchingPotion -import com.habitrpg.android.habitica.models.inventory.Pet import com.habitrpg.android.habitica.models.responses.MaintenanceResponse import com.habitrpg.android.habitica.models.responses.TaskScoringResult import com.habitrpg.android.habitica.models.user.User @@ -44,12 +51,12 @@ import com.habitrpg.android.habitica.ui.AvatarView import com.habitrpg.android.habitica.ui.AvatarWithBarsViewModel import com.habitrpg.android.habitica.ui.TutorialView import com.habitrpg.android.habitica.ui.fragments.NavigationDrawerFragment -import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils import com.habitrpg.android.habitica.ui.viewmodels.MainActivityViewModel import com.habitrpg.android.habitica.ui.viewmodels.NotificationsViewModel -import com.habitrpg.android.habitica.ui.views.* -import com.habitrpg.android.habitica.ui.views.HabiticaSnackbar.SnackbarDisplayType -import com.habitrpg.android.habitica.ui.views.dialogs.* +import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper +import com.habitrpg.android.habitica.ui.views.SnackbarActivity +import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog +import com.habitrpg.android.habitica.ui.views.dialogs.QuestCompletedDialog import com.habitrpg.android.habitica.ui.views.yesterdailies.YesterdailyDialog import com.habitrpg.android.habitica.widget.AvatarStatsWidgetProvider import com.habitrpg.android.habitica.widget.DailiesWidgetProvider @@ -57,7 +64,7 @@ import com.habitrpg.android.habitica.widget.HabitButtonWidgetProvider import com.habitrpg.android.habitica.widget.TodoListWidgetProvider import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.core.Observable -import java.util.* +import java.util.Date import java.util.concurrent.TimeUnit import javax.inject.Inject @@ -494,7 +501,6 @@ open class MainActivity : BaseActivity(), TutorialView.OnTutorialReaction, Snack viewModel.logTutorialStatus(step, false) } - override fun onTutorialCompleted(step: TutorialStep) { viewModel.updateUser("flags.tutorial." + step.tutorialGroup + "." + step.identifier, true) binding.overlayFrameLayout.removeView(this.activeTutorialView) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/NotificationsActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/NotificationsActivity.kt index f0f5ecdab..d4af430ef 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/NotificationsActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/NotificationsActivity.kt @@ -6,7 +6,11 @@ import android.content.Intent import android.os.Bundle import android.view.LayoutInflater import android.view.View -import android.widget.* +import android.widget.Button +import android.widget.ImageView +import android.widget.LinearLayout +import android.widget.RatingBar +import android.widget.TextView import androidx.activity.viewModels import androidx.core.content.ContextCompat import com.habitrpg.android.habitica.R @@ -18,7 +22,15 @@ import com.habitrpg.android.habitica.extensions.fromHtml import com.habitrpg.android.habitica.helpers.RxErrorHandler import com.habitrpg.android.habitica.models.Notification import com.habitrpg.android.habitica.models.inventory.QuestContent -import com.habitrpg.android.habitica.models.notifications.* +import com.habitrpg.android.habitica.models.notifications.GroupTaskApprovedData +import com.habitrpg.android.habitica.models.notifications.GroupTaskNeedsWorkData +import com.habitrpg.android.habitica.models.notifications.GroupTaskRequiresApprovalData +import com.habitrpg.android.habitica.models.notifications.GuildInvitationData +import com.habitrpg.android.habitica.models.notifications.NewChatMessageData +import com.habitrpg.android.habitica.models.notifications.NewStuffData +import com.habitrpg.android.habitica.models.notifications.PartyInvitationData +import com.habitrpg.android.habitica.models.notifications.QuestInvitationData +import com.habitrpg.android.habitica.models.notifications.UnallocatedPointsData import com.habitrpg.android.habitica.ui.viewmodels.NotificationsViewModel import javax.inject.Inject diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/PrefsActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/PrefsActivity.kt index bd670f5f9..6a4f312c5 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/PrefsActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/PrefsActivity.kt @@ -6,7 +6,10 @@ import androidx.preference.PreferenceFragmentCompat import androidx.preference.PreferenceScreen import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.components.UserComponent -import com.habitrpg.android.habitica.ui.fragments.preferences.* +import com.habitrpg.android.habitica.ui.fragments.preferences.AccountPreferenceFragment +import com.habitrpg.android.habitica.ui.fragments.preferences.EmailNotificationsPreferencesFragment +import com.habitrpg.android.habitica.ui.fragments.preferences.PreferencesFragment +import com.habitrpg.android.habitica.ui.fragments.preferences.PushNotificationsPreferencesFragment import com.habitrpg.android.habitica.ui.views.SnackbarActivity class PrefsActivity : BaseActivity(), PreferenceFragmentCompat.OnPreferenceStartScreenCallback, SnackbarActivity { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/PurchaseActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/PurchaseActivity.kt index ebb1bed5f..795a14dfa 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/PurchaseActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/PurchaseActivity.kt @@ -1,3 +1,3 @@ package com.habitrpg.android.habitica.ui.activities -abstract class PurchaseActivity : BaseActivity() \ No newline at end of file +abstract class PurchaseActivity : BaseActivity() diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ReportMessageActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ReportMessageActivity.kt index 93ef60589..dc6579af9 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ReportMessageActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ReportMessageActivity.kt @@ -16,7 +16,6 @@ import com.habitrpg.android.habitica.data.SocialRepository import com.habitrpg.android.habitica.databinding.ActivityReportMessageBinding import com.habitrpg.android.habitica.extensions.getThemeColor import com.habitrpg.android.habitica.helpers.RxErrorHandler -import com.habitrpg.android.habitica.models.social.ChatMessage import com.habitrpg.android.habitica.ui.helpers.dismissKeyboard import com.habitrpg.android.habitica.ui.helpers.setMarkdown import javax.inject.Inject @@ -90,7 +89,7 @@ class ReportMessageActivity : BaseActivity() { } private fun reportMessage() { - if (isReporting ) { + if (isReporting) { return } isReporting = true diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SetupActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SetupActivity.kt index 233b9fbe3..a8f6f00cb 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SetupActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SetupActivity.kt @@ -22,7 +22,6 @@ import com.habitrpg.android.habitica.components.UserComponent import com.habitrpg.android.habitica.data.ApiClient import com.habitrpg.android.habitica.data.InventoryRepository import com.habitrpg.android.habitica.data.TaskRepository -import com.habitrpg.android.habitica.data.UserRepository import com.habitrpg.android.habitica.databinding.ActivitySetupBinding import com.habitrpg.android.habitica.helpers.AmplitudeManager import com.habitrpg.android.habitica.helpers.RxErrorHandler @@ -32,7 +31,8 @@ import com.habitrpg.android.habitica.ui.fragments.setup.TaskSetupFragment import com.habitrpg.android.habitica.ui.fragments.setup.WelcomeFragment import com.viewpagerindicator.IconPagerAdapter import io.reactivex.rxjava3.core.BackpressureStrategy -import java.util.* +import java.util.Calendar +import java.util.Locale import javax.inject.Inject class SetupActivity : BaseActivity(), ViewPager.OnPageChangeListener { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SkillMemberActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SkillMemberActivity.kt index 25efc6a62..43689efcf 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SkillMemberActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SkillMemberActivity.kt @@ -8,7 +8,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.components.UserComponent import com.habitrpg.android.habitica.data.SocialRepository -import com.habitrpg.android.habitica.data.UserRepository import com.habitrpg.android.habitica.databinding.ActivitySkillMembersBinding import com.habitrpg.android.habitica.helpers.RxErrorHandler import com.habitrpg.android.habitica.ui.adapter.social.PartyMemberRecyclerViewAdapter diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.kt index f681e4e7f..06efa4d08 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.kt @@ -9,7 +9,11 @@ import android.graphics.Typeface import android.graphics.drawable.ColorDrawable import android.os.Bundle import android.os.Handler -import android.view.* +import android.view.Menu +import android.view.MenuItem +import android.view.MotionEvent +import android.view.View +import android.view.WindowManager import android.widget.CheckBox import android.widget.TextView import androidx.appcompat.widget.AppCompatCheckBox @@ -40,7 +44,7 @@ import com.habitrpg.android.habitica.models.tasks.TaskType import com.habitrpg.android.habitica.ui.helpers.dismissKeyboard import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog import io.realm.RealmList -import java.util.* +import java.util.Date import javax.inject.Inject class TaskFormActivity : BaseActivity() { @@ -242,7 +246,6 @@ class TaskFormActivity : BaseActivity() { ) initialTaskInstance = configureTask(Task()) } - } configureForm() } @@ -274,9 +277,11 @@ class TaskFormActivity : BaseActivity() { isDiscardCancelled = true alert.dismiss() } - alert.setOnDismissListener(DialogInterface.OnDismissListener { - isDiscardCancelled = true - }) + alert.setOnDismissListener( + DialogInterface.OnDismissListener { + isDiscardCancelled = true + } + ) alert.show() } else { super.onBackPressed() @@ -541,13 +546,12 @@ class TaskFormActivity : BaseActivity() { resultIntent.putExtra(TASK_TYPE_KEY, taskType) if (!isChallengeTask) { if (isCreating) { - if (isDiscardCancelled){ + if (isDiscardCancelled) { analyticsManager.logEvent("back_to_task", bundleOf(Pair("is_creating", isCreating))) } taskRepository.createTaskInBackground(thisTask) - } else { - if (isDiscardCancelled){ + if (isDiscardCancelled) { analyticsManager.logEvent("back_to_task", bundleOf(Pair("is_creating", isCreating))) } taskRepository.updateTaskInBackground(thisTask) @@ -650,21 +654,21 @@ class TaskFormActivity : BaseActivity() { taskRepository.unlinkAllTasks(task.challengeID, "keep-all") .flatMap { userRepository.retrieveUser(true, true) } .subscribe( - { - finish() - }, - RxErrorHandler.handleEmptyError() - ) + { + finish() + }, + RxErrorHandler.handleEmptyError() + ) } dialog.addButton(this.getString(R.string.delete_x_tasks, taskCount), false, true) { _, _ -> taskRepository.unlinkAllTasks(task.challengeID, "remove-all") .flatMap { userRepository.retrieveUser(true, true) } .subscribe( - { - finish() - }, - RxErrorHandler.handleEmptyError() - ) + { + finish() + }, + RxErrorHandler.handleEmptyError() + ) } dialog.setExtraCloseButtonVisibility(View.VISIBLE) dialog.show() diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/VerifyUsernameActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/VerifyUsernameActivity.kt index 8b805712d..a3120cc93 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/VerifyUsernameActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/VerifyUsernameActivity.kt @@ -8,7 +8,6 @@ import android.view.View import androidx.core.content.ContextCompat import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.components.UserComponent -import com.habitrpg.android.habitica.data.UserRepository import com.habitrpg.android.habitica.databinding.ActivityVerifyUsernameBinding import com.habitrpg.android.habitica.extensions.OnChangeTextWatcher import com.habitrpg.android.habitica.extensions.runDelayed @@ -19,7 +18,6 @@ import io.reactivex.rxjava3.core.BackpressureStrategy import io.reactivex.rxjava3.core.Flowable import io.reactivex.rxjava3.subjects.PublishSubject import java.util.concurrent.TimeUnit -import javax.inject.Inject class VerifyUsernameActivity : BaseActivity() { private lateinit var binding: ActivityVerifyUsernameBinding diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/BaseRecyclerViewAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/BaseRecyclerViewAdapter.kt index 28eaf291b..8106b4ab0 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/BaseRecyclerViewAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/BaseRecyclerViewAdapter.kt @@ -1,12 +1,10 @@ package com.habitrpg.android.habitica.ui.adapter -import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.DiffUtil +import androidx.recyclerview.widget.RecyclerView import com.habitrpg.android.habitica.models.BaseMainObject -import com.habitrpg.android.habitica.models.BaseObject - -open class DiffCallback(protected val oldList: List, protected val newList: List) : +open class DiffCallback(protected val oldList: List, protected val newList: List) : DiffUtil.Callback() { override fun getOldListSize(): Int { @@ -28,7 +26,7 @@ open class DiffCallback(protected val oldList: List : RecyclerView.Adapter() { +abstract class BaseRecyclerViewAdapter : RecyclerView.Adapter() { open fun getDiffCallback(oldList: List, newList: List): DiffCallback? { return null diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/CustomizationEquipmentRecyclerViewAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/CustomizationEquipmentRecyclerViewAdapter.kt index 2b32bfde8..f1b61fcc1 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/CustomizationEquipmentRecyclerViewAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/CustomizationEquipmentRecyclerViewAdapter.kt @@ -19,7 +19,6 @@ import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog import io.reactivex.rxjava3.core.BackpressureStrategy import io.reactivex.rxjava3.core.Flowable import io.reactivex.rxjava3.subjects.PublishSubject -import java.util.* class CustomizationEquipmentRecyclerViewAdapter : androidx.recyclerview.widget.RecyclerView.Adapter() { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/CustomizationRecyclerViewAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/CustomizationRecyclerViewAdapter.kt index 6dd1ebf58..4dc6f5960 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/CustomizationRecyclerViewAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/CustomizationRecyclerViewAdapter.kt @@ -23,7 +23,7 @@ import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog import io.reactivex.rxjava3.core.BackpressureStrategy import io.reactivex.rxjava3.core.Flowable import io.reactivex.rxjava3.subjects.PublishSubject -import java.util.* +import java.util.Date class CustomizationRecyclerViewAdapter() : androidx.recyclerview.widget.RecyclerView.Adapter() { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/SkillTasksRecyclerViewAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/SkillTasksRecyclerViewAdapter.kt index 8ee7302ea..e519a18fd 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/SkillTasksRecyclerViewAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/SkillTasksRecyclerViewAdapter.kt @@ -11,7 +11,7 @@ import com.habitrpg.android.habitica.models.tasks.Task import io.reactivex.rxjava3.core.BackpressureStrategy import io.reactivex.rxjava3.core.Flowable import io.reactivex.rxjava3.subjects.PublishSubject -import java.util.* +import java.util.UUID class SkillTasksRecyclerViewAdapter : BaseRecyclerViewAdapter() { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/SkillsRecyclerViewAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/SkillsRecyclerViewAdapter.kt index 6b64fa8b0..82639526c 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/SkillsRecyclerViewAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/SkillsRecyclerViewAdapter.kt @@ -135,7 +135,7 @@ class SkillsRecyclerViewAdapter : RecyclerView.Adapter() { @@ -124,7 +131,6 @@ class ItemRecyclerAdapter(val context: Context, val user: User?) : BaseRecyclerV } else { imageName = "shop_" + ownedItem.key } - } else { val type = when (ownedItem.itemType) { "eggs" -> "Egg" @@ -171,10 +177,9 @@ class ItemRecyclerAdapter(val context: Context, val user: User?) : BaseRecyclerV val specialItem = item as SpecialItem if (specialItem.isMysteryItem && ownedItem?.numberOwned ?: 0 > 0) { menu.addMenuItem(BottomSheetMenuItem(resources.getString(R.string.open))) - } else if (ownedItem?.numberOwned ?: 0 > 0){ + } else if (ownedItem?.numberOwned ?: 0 > 0) { menu.addMenuItem(BottomSheetMenuItem(resources.getString(R.string.use_item))) } - } menu.setSelectionRunnable { index -> item?.let { selectedItem -> diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/MountDetailRecyclerAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/MountDetailRecyclerAdapter.kt index 69e9bcbda..a3977b699 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/MountDetailRecyclerAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/MountDetailRecyclerAdapter.kt @@ -4,7 +4,6 @@ import android.view.ViewGroup import com.habitrpg.android.habitica.models.inventory.Mount import com.habitrpg.android.habitica.models.inventory.StableSection import com.habitrpg.android.habitica.models.user.OwnedMount -import com.habitrpg.android.habitica.models.user.User import com.habitrpg.android.habitica.ui.viewHolders.MountViewHolder import com.habitrpg.android.habitica.ui.viewHolders.SectionViewHolder import io.reactivex.rxjava3.core.BackpressureStrategy @@ -16,10 +15,10 @@ class MountDetailRecyclerAdapter : androidx.recyclerview.widget.RecyclerView.Ada private val equipEvents = PublishSubject.create() var currentMount: String? = null - set(value) { - field = value - notifyDataSetChanged() - } + set(value) { + field = value + notifyDataSetChanged() + } private var itemList: List = ArrayList() diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/PetDetailRecyclerAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/PetDetailRecyclerAdapter.kt index cfb6b1279..a95bdde6f 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/PetDetailRecyclerAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/PetDetailRecyclerAdapter.kt @@ -1,11 +1,16 @@ package com.habitrpg.android.habitica.ui.adapter.inventory import android.view.ViewGroup -import com.habitrpg.android.habitica.models.inventory.* +import com.habitrpg.android.habitica.models.inventory.Animal +import com.habitrpg.android.habitica.models.inventory.Egg +import com.habitrpg.android.habitica.models.inventory.Food +import com.habitrpg.android.habitica.models.inventory.HatchingPotion +import com.habitrpg.android.habitica.models.inventory.Mount +import com.habitrpg.android.habitica.models.inventory.Pet +import com.habitrpg.android.habitica.models.inventory.StableSection import com.habitrpg.android.habitica.models.user.OwnedItem import com.habitrpg.android.habitica.models.user.OwnedMount import com.habitrpg.android.habitica.models.user.OwnedPet -import com.habitrpg.android.habitica.models.user.User import com.habitrpg.android.habitica.ui.viewHolders.PetViewHolder import com.habitrpg.android.habitica.ui.viewHolders.SectionViewHolder import io.reactivex.rxjava3.core.BackpressureStrategy @@ -18,10 +23,10 @@ class PetDetailRecyclerAdapter : androidx.recyclerview.widget.RecyclerView.Adapt private var ownedMounts: Map? = null private var ownedItems: Map? = null var currentPet: String? = null - set(value) { - field = value - notifyDataSetChanged() - } + set(value) { + field = value + notifyDataSetChanged() + } private val equipEvents = PublishSubject.create() private val feedEvents = PublishSubject.create>() private var ownsSaddles: Boolean = false @@ -107,7 +112,7 @@ class PetDetailRecyclerAdapter : androidx.recyclerview.widget.RecyclerView.Adapt fun setOwnedItems(ownedItems: Map) { this.ownedItems = ownedItems - ownsSaddles = if (ownedItems.containsKey("Saddle-food")) (ownedItems["Saddle-food"]?.numberOwned ?: 0)> 0 else false + ownsSaddles = if (ownedItems.containsKey("Saddle-food")) (ownedItems["Saddle-food"]?.numberOwned ?: 0) > 0 else false notifyDataSetChanged() } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/StableRecyclerAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/StableRecyclerAdapter.kt index ea2d6fb92..caf1cacbd 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/StableRecyclerAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/StableRecyclerAdapter.kt @@ -11,10 +11,15 @@ import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.databinding.ShopHeaderBinding import com.habitrpg.android.habitica.extensions.inflate import com.habitrpg.android.habitica.helpers.MainNavigationController -import com.habitrpg.android.habitica.models.inventory.* +import com.habitrpg.android.habitica.models.inventory.Animal +import com.habitrpg.android.habitica.models.inventory.Egg +import com.habitrpg.android.habitica.models.inventory.Food +import com.habitrpg.android.habitica.models.inventory.HatchingPotion +import com.habitrpg.android.habitica.models.inventory.Mount +import com.habitrpg.android.habitica.models.inventory.Pet +import com.habitrpg.android.habitica.models.inventory.StableSection import com.habitrpg.android.habitica.models.user.OwnedItem import com.habitrpg.android.habitica.models.user.OwnedMount -import com.habitrpg.android.habitica.models.user.User import com.habitrpg.android.habitica.ui.fragments.inventory.stable.StableFragmentDirections import com.habitrpg.android.habitica.ui.helpers.loadImage import com.habitrpg.android.habitica.ui.viewHolders.MountViewHolder @@ -77,7 +82,7 @@ class StableRecyclerAdapter : RecyclerView.Adapter() { fun setOwnedItems(ownedItems: Map) { this.ownedItems = ownedItems - ownsSaddles = if (ownedItems.containsKey("Saddle-food")) (ownedItems["Saddle-food"]?.numberOwned ?: 0)> 0 else false + ownsSaddles = if (ownedItems.containsKey("Saddle-food")) (ownedItems["Saddle-food"]?.numberOwned ?: 0) > 0 else false notifyDataSetChanged() } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/setup/TaskSetupAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/setup/TaskSetupAdapter.kt index 71f8f2b39..a73ac3596 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/setup/TaskSetupAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/setup/TaskSetupAdapter.kt @@ -12,7 +12,6 @@ import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.extensions.inflate import com.habitrpg.android.habitica.extensions.setTintWith -import java.util.* class TaskSetupAdapter : RecyclerView.Adapter() { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/ChatRecyclerViewAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/ChatRecyclerViewAdapter.kt index 8b45d79d5..4fc826170 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/ChatRecyclerViewAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/ChatRecyclerViewAdapter.kt @@ -8,7 +8,6 @@ import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.databinding.SystemChatMessageBinding import com.habitrpg.android.habitica.extensions.inflate import com.habitrpg.android.habitica.models.BaseMainObject -import com.habitrpg.android.habitica.models.BaseObject import com.habitrpg.android.habitica.models.social.ChatMessage import com.habitrpg.android.habitica.models.user.User import com.habitrpg.android.habitica.ui.adapter.BaseRecyclerViewAdapter @@ -29,8 +28,7 @@ class ChatDiffCallback(oldList: List, newList: List() { internal var user = user diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/GuildListAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/GuildListAdapter.kt index 99c863f56..c6e5299f9 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/GuildListAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/GuildListAdapter.kt @@ -22,7 +22,7 @@ import com.habitrpg.android.habitica.ui.helpers.EmojiParser import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper import io.realm.Case import io.realm.OrderedRealmCollection -import java.util.* +import java.util.Locale class GuildListAdapter : BaseRecyclerViewAdapter(), Filterable { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/challenges/ChallengeTasksRecyclerViewAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/challenges/ChallengeTasksRecyclerViewAdapter.kt index 8e9bfa435..81ce99583 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/challenges/ChallengeTasksRecyclerViewAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/challenges/ChallengeTasksRecyclerViewAdapter.kt @@ -12,7 +12,11 @@ import com.habitrpg.android.habitica.models.tasks.Task import com.habitrpg.android.habitica.models.tasks.TaskType import com.habitrpg.android.habitica.ui.adapter.tasks.BaseTasksRecyclerViewAdapter import com.habitrpg.android.habitica.ui.viewHolders.BindableViewHolder -import com.habitrpg.android.habitica.ui.viewHolders.tasks.* +import com.habitrpg.android.habitica.ui.viewHolders.tasks.BaseTaskViewHolder +import com.habitrpg.android.habitica.ui.viewHolders.tasks.DailyViewHolder +import com.habitrpg.android.habitica.ui.viewHolders.tasks.HabitViewHolder +import com.habitrpg.android.habitica.ui.viewHolders.tasks.RewardViewHolder +import com.habitrpg.android.habitica.ui.viewHolders.tasks.TodoViewHolder import io.reactivex.rxjava3.core.BackpressureStrategy import io.reactivex.rxjava3.core.Flowable import io.reactivex.rxjava3.subjects.PublishSubject diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/challenges/ChallengesFilterRecyclerViewAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/challenges/ChallengesFilterRecyclerViewAdapter.kt index da0cb77c0..d57cf4656 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/challenges/ChallengesFilterRecyclerViewAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/challenges/ChallengesFilterRecyclerViewAdapter.kt @@ -7,7 +7,6 @@ import android.widget.CheckBox import androidx.recyclerview.widget.RecyclerView import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.models.social.Group -import java.util.* class ChallengesFilterRecyclerViewAdapter(entries: List) : RecyclerView.Adapter() { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/BaseTasksRecyclerViewAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/BaseTasksRecyclerViewAdapter.kt index fd26de1ad..802708bae 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/BaseTasksRecyclerViewAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/BaseTasksRecyclerViewAdapter.kt @@ -13,7 +13,6 @@ import com.habitrpg.android.habitica.models.tasks.TaskType import com.habitrpg.android.habitica.proxy.AnalyticsManager import com.habitrpg.android.habitica.ui.adapter.BaseRecyclerViewAdapter import com.habitrpg.android.habitica.ui.viewHolders.BindableViewHolder -import java.util.* import javax.inject.Inject abstract class BaseTasksRecyclerViewAdapter>( diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/DailiesRecyclerViewHolder.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/DailiesRecyclerViewHolder.kt index 821e90c7e..bd728ec3c 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/DailiesRecyclerViewHolder.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/DailiesRecyclerViewHolder.kt @@ -2,7 +2,6 @@ package com.habitrpg.android.habitica.ui.adapter.tasks import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView -import com.google.android.material.internal.ViewUtils.getContentView import com.habitrpg.android.habitica.helpers.TaskFilterHelper import com.habitrpg.android.habitica.ui.viewHolders.tasks.DailyViewHolder diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RealmBaseTasksRecyclerViewAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RealmBaseTasksRecyclerViewAdapter.kt index 94d60698c..e3b6ec854 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RealmBaseTasksRecyclerViewAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RealmBaseTasksRecyclerViewAdapter.kt @@ -32,20 +32,20 @@ abstract class RealmBaseTasksRecyclerViewAdapter( override var canScoreTasks = true private var unfilteredData: List? = null override var showAdventureGuide = false - set(value) { - if (field == value) return - field = value - if (value) { - notifyItemInserted(0) - } else { - notifyItemRemoved(0) + set(value) { + if (field == value) return + field = value + if (value) { + notifyItemInserted(0) + } else { + notifyItemRemoved(0) + } } - } override var user: User? = null - set(value) { - field = value - notifyItemChanged(0) - } + set(value) { + field = value + notifyItemChanged(0) + } override var taskDisplayMode: String = "standard" set(value) { @@ -147,10 +147,10 @@ class AdventureGuideViewHolder(itemView: View) : RecyclerView.ViewHolder(itemVie } fun update(user: User) { - val achievements = user.onboardingAchievements + val achievements = user.onboardingAchievements val completed = achievements.count { it.earned } progressBar.max = achievements.size progressBar.progress = completed countView.text = "$completed / ${achievements.size}" } -} \ No newline at end of file +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/TodosRecyclerViewAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/TodosRecyclerViewAdapter.kt index 1e1a403eb..88cce159d 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/TodosRecyclerViewAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/TodosRecyclerViewAdapter.kt @@ -24,5 +24,4 @@ class TodosRecyclerViewAdapter(layoutResource: Int, taskFilterHelper: TaskFilter super.onCreateViewHolder(parent, viewType) } } - } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/AchievementsFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/AchievementsFragment.kt index b77c3c20f..fdfb76a01 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/AchievementsFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/AchievementsFragment.kt @@ -2,7 +2,12 @@ package com.habitrpg.android.habitica.ui.fragments import android.graphics.drawable.ColorDrawable import android.os.Bundle -import android.view.* +import android.view.LayoutInflater +import android.view.Menu +import android.view.MenuInflater +import android.view.MenuItem +import android.view.View +import android.view.ViewGroup import androidx.appcompat.widget.Toolbar import androidx.core.content.ContextCompat import androidx.recyclerview.widget.GridLayoutManager @@ -24,7 +29,7 @@ class AchievementsFragment : BaseMainFragment 0 } .subscribe( - { - questContent = it - }, - RxErrorHandler.handleEmptyError() - ) + { + questContent = it + }, + RxErrorHandler.handleEmptyError() + ) ) binding?.messagesButtonWrapper?.setOnClickListener { setSelection(R.id.inboxFragment, null, true, preventReselection = false) } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/StatsFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/StatsFragment.kt index 10121347e..e323ba274 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/StatsFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/StatsFragment.kt @@ -21,7 +21,6 @@ import com.habitrpg.android.habitica.models.user.User import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog import com.habitrpg.android.habitica.ui.views.stats.BulkAllocateStatsDialog -import java.util.* import javax.inject.Inject import kotlin.math.min diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarCustomizationFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarCustomizationFragment.kt index 87c04d055..31328b5ee 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarCustomizationFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarCustomizationFragment.kt @@ -11,7 +11,6 @@ import com.habitrpg.android.habitica.components.UserComponent import com.habitrpg.android.habitica.data.CustomizationRepository import com.habitrpg.android.habitica.data.InventoryRepository import com.habitrpg.android.habitica.databinding.FragmentRefreshRecyclerviewBinding -import com.habitrpg.android.habitica.extensions.subscribeWithErrorHandler import com.habitrpg.android.habitica.helpers.RxErrorHandler import com.habitrpg.android.habitica.models.user.User import com.habitrpg.android.habitica.ui.adapter.CustomizationRecyclerViewAdapter diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/equipment/EquipmentOverviewFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/equipment/EquipmentOverviewFragment.kt index a18122de8..db3ef38cb 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/equipment/EquipmentOverviewFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/equipment/EquipmentOverviewFragment.kt @@ -36,10 +36,12 @@ class EquipmentOverviewFragment : BaseMainFragment if (isChecked == viewModel.user.value?.preferences?.autoEquip) return@setOnCheckedChangeListener - viewModel.updateUser("preferences.autoEquip", isChecked) } + viewModel.updateUser("preferences.autoEquip", isChecked) + } binding?.costumeSwitch?.setOnCheckedChangeListener { _, isChecked -> if (isChecked == viewModel.user.value?.preferences?.costume) return@setOnCheckedChangeListener - viewModel.updateUser("preferences.costume", isChecked) } + viewModel.updateUser("preferences.costume", isChecked) + } viewModel.user.observe(viewLifecycleOwner) { it?.items?.gear?.let { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemDialogFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemDialogFragment.kt index 38eef8c5b..3ff959f02 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemDialogFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemDialogFragment.kt @@ -18,7 +18,13 @@ import com.habitrpg.android.habitica.helpers.MainNavigationController import com.habitrpg.android.habitica.helpers.RxErrorHandler import com.habitrpg.android.habitica.interactors.FeedPetUseCase import com.habitrpg.android.habitica.interactors.HatchPetUseCase -import com.habitrpg.android.habitica.models.inventory.* +import com.habitrpg.android.habitica.models.inventory.Egg +import com.habitrpg.android.habitica.models.inventory.Food +import com.habitrpg.android.habitica.models.inventory.HatchingPotion +import com.habitrpg.android.habitica.models.inventory.Item +import com.habitrpg.android.habitica.models.inventory.Pet +import com.habitrpg.android.habitica.models.inventory.QuestContent +import com.habitrpg.android.habitica.models.inventory.SpecialItem import com.habitrpg.android.habitica.models.user.OwnedPet import com.habitrpg.android.habitica.models.user.User import com.habitrpg.android.habitica.ui.activities.BaseActivity @@ -197,18 +203,21 @@ class ItemDialogFragment : BaseDialogFragment(), SwipeRefr dismiss() openMarket() } - + this.loadItems() } private fun feedPet(food: Food) { val pet = feedingPet ?: return (activity as? BaseActivity)?.let { - it.compositeSubscription.add(feedPetUseCase.observable( - FeedPetUseCase.RequestValues( - pet, food, - it - )).subscribeWithErrorHandler {}) + it.compositeSubscription.add( + feedPetUseCase.observable( + FeedPetUseCase.RequestValues( + pet, food, + it + ) + ).subscribeWithErrorHandler {} + ) } } @@ -241,11 +250,14 @@ class ItemDialogFragment : BaseDialogFragment(), SwipeRefr private fun hatchPet(potion: HatchingPotion, egg: Egg) { dismiss() (activity as? BaseActivity)?.let { - it.compositeSubscription.add(hatchPetUseCase.observable( - HatchPetUseCase.RequestValues( - potion, egg, - it - )).subscribeWithErrorHandler {}) + it.compositeSubscription.add( + hatchPetUseCase.observable( + HatchPetUseCase.RequestValues( + potion, egg, + it + ) + ).subscribeWithErrorHandler {} + ) } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemRecyclerFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemRecyclerFragment.kt index a145cfca2..8362b5b17 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemRecyclerFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemRecyclerFragment.kt @@ -20,7 +20,12 @@ import com.habitrpg.android.habitica.extensions.subscribeWithErrorHandler import com.habitrpg.android.habitica.helpers.MainNavigationController import com.habitrpg.android.habitica.helpers.RxErrorHandler import com.habitrpg.android.habitica.interactors.HatchPetUseCase -import com.habitrpg.android.habitica.models.inventory.* +import com.habitrpg.android.habitica.models.inventory.Egg +import com.habitrpg.android.habitica.models.inventory.Food +import com.habitrpg.android.habitica.models.inventory.HatchingPotion +import com.habitrpg.android.habitica.models.inventory.Item +import com.habitrpg.android.habitica.models.inventory.QuestContent +import com.habitrpg.android.habitica.models.inventory.SpecialItem import com.habitrpg.android.habitica.models.responses.SkillResponse import com.habitrpg.android.habitica.models.user.OwnedItem import com.habitrpg.android.habitica.models.user.OwnedPet @@ -36,6 +41,7 @@ import com.habitrpg.android.habitica.ui.helpers.loadImage import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog import com.habitrpg.android.habitica.ui.views.HabiticaSnackbar import com.habitrpg.android.habitica.ui.viewmodels.MainUserViewModel +import com.habitrpg.android.habitica.ui.views.HabiticaSnackbar import com.habitrpg.android.habitica.ui.views.dialogs.OpenedMysteryitemDialog import io.reactivex.rxjava3.core.Flowable import javax.inject.Inject @@ -200,11 +206,14 @@ class ItemRecyclerFragment : BaseFragment(), SwipeRefreshL private fun hatchPet(potion: HatchingPotion, egg: Egg) { (activity as? BaseActivity)?.let { - compositeSubscription.add(hatchPetUseCase.observable( - HatchPetUseCase.RequestValues( - potion, egg, - it - )).subscribeWithErrorHandler {}) + compositeSubscription.add( + hatchPetUseCase.observable( + HatchPetUseCase.RequestValues( + potion, egg, + it + ) + ).subscribeWithErrorHandler {} + ) } } @@ -283,7 +292,6 @@ class ItemRecyclerFragment : BaseFragment(), SwipeRefreshL RxErrorHandler.handleEmptyError() ) ) - } compositeSubscription.add(inventoryRepository.getPets().subscribe({ adapter?.setExistingPets(it) }, RxErrorHandler.handleEmptyError())) @@ -344,7 +352,6 @@ class ItemRecyclerFragment : BaseFragment(), SwipeRefreshL } loadItems() - } companion object { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/shops/ShopFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/shops/ShopFragment.kt index 9d8333152..4205a7397 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/shops/ShopFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/shops/ShopFragment.kt @@ -6,7 +6,6 @@ import android.view.View import android.view.ViewGroup import androidx.core.os.bundleOf import androidx.recyclerview.widget.GridLayoutManager -import com.google.firebase.analytics.FirebaseAnalytics import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.components.UserComponent import com.habitrpg.android.habitica.data.InventoryRepository @@ -156,7 +155,6 @@ open class ShopFragment : BaseMainFragment() alert.setTitle(getString(R.string.class_confirmation_price, classIdentifier, 3)) alert.addButton(R.string.choose_class, true) { _, _ -> userRepository.changeClass(classIdentifier).subscribeWithErrorHandler { - } } alert.addButton(R.string.dialog_go_back, false) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/MountDetailRecyclerFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/MountDetailRecyclerFragment.kt index 3757d58c9..094d34244 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/MountDetailRecyclerFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/MountDetailRecyclerFragment.kt @@ -16,7 +16,6 @@ import com.habitrpg.android.habitica.models.inventory.StableSection import com.habitrpg.android.habitica.models.user.OwnedMount import com.habitrpg.android.habitica.ui.adapter.inventory.MountDetailRecyclerAdapter import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment -import com.habitrpg.android.habitica.ui.helpers.MarginDecoration import com.habitrpg.android.habitica.ui.helpers.SafeDefaultItemAnimator import com.habitrpg.android.habitica.ui.viewmodels.MainUserViewModel import javax.inject.Inject diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/PetDetailRecyclerFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/PetDetailRecyclerFragment.kt index a8325b5a7..bcd695034 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/PetDetailRecyclerFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/PetDetailRecyclerFragment.kt @@ -13,8 +13,11 @@ import com.habitrpg.android.habitica.extensions.getTranslatedType import com.habitrpg.android.habitica.extensions.subscribeWithErrorHandler import com.habitrpg.android.habitica.helpers.RxErrorHandler import com.habitrpg.android.habitica.interactors.FeedPetUseCase -import com.habitrpg.android.habitica.interactors.HatchPetUseCase -import com.habitrpg.android.habitica.models.inventory.* +import com.habitrpg.android.habitica.models.inventory.Egg +import com.habitrpg.android.habitica.models.inventory.Food +import com.habitrpg.android.habitica.models.inventory.HatchingPotion +import com.habitrpg.android.habitica.models.inventory.Pet +import com.habitrpg.android.habitica.models.inventory.StableSection import com.habitrpg.android.habitica.models.user.OwnedMount import com.habitrpg.android.habitica.models.user.OwnedPet import com.habitrpg.android.habitica.ui.activities.BaseActivity @@ -202,11 +205,14 @@ class PetDetailRecyclerFragment : private fun showFeedingDialog(pet: Pet, food: Food?) { if (food != null) { (activity as? BaseActivity)?.let { - compositeSubscription.add(feedPetUseCase.observable( - FeedPetUseCase.RequestValues( - pet, food, - it - )).subscribeWithErrorHandler {}) + compositeSubscription.add( + feedPetUseCase.observable( + FeedPetUseCase.RequestValues( + pet, food, + it + ) + ).subscribeWithErrorHandler {} + ) } return } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/StableRecyclerFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/StableRecyclerFragment.kt index 508f910c9..52439f106 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/StableRecyclerFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/StableRecyclerFragment.kt @@ -17,7 +17,9 @@ import com.habitrpg.android.habitica.models.inventory.Animal import com.habitrpg.android.habitica.models.inventory.Egg import com.habitrpg.android.habitica.models.inventory.HatchingPotion import com.habitrpg.android.habitica.models.inventory.StableSection -import com.habitrpg.android.habitica.models.user.* +import com.habitrpg.android.habitica.models.user.OwnedMount +import com.habitrpg.android.habitica.models.user.OwnedObject +import com.habitrpg.android.habitica.models.user.OwnedPet import com.habitrpg.android.habitica.ui.adapter.inventory.StableRecyclerAdapter import com.habitrpg.android.habitica.ui.fragments.BaseFragment import com.habitrpg.android.habitica.ui.helpers.EmptyItem @@ -27,7 +29,6 @@ import com.habitrpg.android.habitica.ui.viewmodels.MainUserViewModel import io.reactivex.rxjava3.core.Flowable import io.reactivex.rxjava3.core.Maybe import io.reactivex.rxjava3.kotlin.combineLatest -import java.util.* import javax.inject.Inject class StableRecyclerFragment : diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/AccountPreferenceFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/AccountPreferenceFragment.kt index 57e75fbd0..bcb71c955 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/AccountPreferenceFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/AccountPreferenceFragment.kt @@ -2,7 +2,10 @@ package com.habitrpg.android.habitica.ui.fragments.preferences import android.accounts.AccountManager import android.app.Activity -import android.content.* +import android.content.ClipData +import android.content.ClipboardManager +import android.content.Intent +import android.content.SharedPreferences import android.os.Bundle import android.text.InputType import android.view.View @@ -35,8 +38,8 @@ import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaProgressDialog import javax.inject.Inject - -class AccountPreferenceFragment: BasePreferencesFragment(), +class AccountPreferenceFragment : + BasePreferencesFragment(), SharedPreferences.OnSharedPreferenceChangeListener { @Inject lateinit var hostConfig: HostConfig @@ -72,7 +75,6 @@ class AccountPreferenceFragment: BasePreferencesFragment(), super.onPause() } - private fun updateUserFields() { val user = user ?: return configurePreference(findPreference("username"), user.authentication?.localAuthentication?.username) @@ -121,17 +123,15 @@ class AccountPreferenceFragment: BasePreferencesFragment(), configurePreference(findPreference("UserID"), user.id) } - private fun configurePreference(preference: Preference?, value: String?) { (preference as? EditTextPreference)?.let { it.text = value - } preference?.summary = value } override fun onPreferenceTreeClick(preference: Preference): Boolean { - when(preference.key) { + when (preference.key) { "username" -> showLoginNameDialog() "confirm_username" -> showConfirmUsernameDialog() "email" -> { @@ -239,7 +239,8 @@ class AccountPreferenceFragment: BasePreferencesFragment(), } private val recoverFromPlayServicesErrorResult = registerForActivityResult( - ActivityResultContracts.StartActivityForResult()) { + ActivityResultContracts.StartActivityForResult() + ) { if (it.resultCode != Activity.RESULT_CANCELED) { activity?.let { it1 -> viewModel.handleGoogleLoginResult(it1, null) { _, _ -> @@ -276,9 +277,11 @@ class AccountPreferenceFragment: BasePreferencesFragment(), passwordEditText?.showErrorIfNecessary() passwordRepeatEditText?.showErrorIfNecessary() if (passwordEditText?.isValid != true || passwordRepeatEditText?.isValid != true) return@addButton - userRepository.updatePassword(oldPasswordEditText?.text ?: "", + userRepository.updatePassword( + oldPasswordEditText?.text ?: "", passwordEditText.text ?: "", - passwordRepeatEditText.text ?: "") + passwordRepeatEditText.text ?: "" + ) .flatMap { userRepository.retrieveUser(true, true) } .subscribe( { @@ -494,4 +497,4 @@ class AccountPreferenceFragment: BasePreferencesFragment(), override fun onSharedPreferenceChanged(p0: SharedPreferences?, p1: String?) { } -} \ No newline at end of file +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/DayStartPreferenceDialogFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/DayStartPreferenceDialogFragment.kt index b7f33cdff..9d8252f18 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/DayStartPreferenceDialogFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/DayStartPreferenceDialogFragment.kt @@ -12,7 +12,8 @@ import androidx.preference.PreferenceFragmentCompat import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.prefs.TimePreference import java.text.DateFormat -import java.util.* +import java.util.Calendar +import java.util.GregorianCalendar class DayStartPreferenceDialogFragment : PreferenceDialogFragmentCompat() { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/PreferencesFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/PreferencesFragment.kt index 6702d0374..a05cef7dc 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/PreferencesFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/PreferencesFragment.kt @@ -17,7 +17,12 @@ import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.data.ApiClient import com.habitrpg.android.habitica.data.ContentRepository import com.habitrpg.android.habitica.extensions.addCancelButton -import com.habitrpg.android.habitica.helpers.* +import com.habitrpg.android.habitica.helpers.AppConfigManager +import com.habitrpg.android.habitica.helpers.AppTestingLevel +import com.habitrpg.android.habitica.helpers.LanguageHelper +import com.habitrpg.android.habitica.helpers.RxErrorHandler +import com.habitrpg.android.habitica.helpers.SoundManager +import com.habitrpg.android.habitica.helpers.TaskAlarmManager import com.habitrpg.android.habitica.helpers.notifications.PushNotificationManager import com.habitrpg.android.habitica.models.user.User import com.habitrpg.android.habitica.prefs.TimePreference @@ -27,7 +32,7 @@ import com.habitrpg.android.habitica.ui.activities.PrefsActivity import com.habitrpg.android.habitica.ui.views.HabiticaSnackbar import com.habitrpg.android.habitica.ui.views.SnackbarActivity import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog -import java.util.* +import java.util.Locale import javax.inject.Inject class PreferencesFragment : BasePreferencesFragment(), SharedPreferences.OnSharedPreferenceChangeListener { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/TimePreferenceDialogFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/TimePreferenceDialogFragment.kt index d7c97b50d..ac80e8b41 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/TimePreferenceDialogFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/TimePreferenceDialogFragment.kt @@ -8,8 +8,7 @@ import android.widget.TimePicker import androidx.preference.PreferenceDialogFragmentCompat import androidx.preference.PreferenceFragmentCompat import com.habitrpg.android.habitica.prefs.TimePreference -import java.text.DateFormat -import java.util.* +import java.util.Locale class TimePreferenceDialogFragment : PreferenceDialogFragmentCompat() { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/purchases/GemsPurchaseFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/purchases/GemsPurchaseFragment.kt index 1e46ea04a..18a1d8f2e 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/purchases/GemsPurchaseFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/purchases/GemsPurchaseFragment.kt @@ -14,16 +14,21 @@ import com.habitrpg.android.habitica.data.UserRepository import com.habitrpg.android.habitica.databinding.FragmentGemPurchaseBinding import com.habitrpg.android.habitica.extensions.addCancelButton import com.habitrpg.android.habitica.extensions.isUsingNightModeResources -import com.habitrpg.android.habitica.helpers.* +import com.habitrpg.android.habitica.helpers.AmplitudeManager +import com.habitrpg.android.habitica.helpers.AppConfigManager +import com.habitrpg.android.habitica.helpers.PurchaseHandler +import com.habitrpg.android.habitica.helpers.PurchaseTypes import com.habitrpg.android.habitica.models.promotions.PromoType import com.habitrpg.android.habitica.ui.GemPurchaseOptionsView import com.habitrpg.android.habitica.ui.activities.GiftGemsActivity -import com.habitrpg.android.habitica.ui.activities.GiftSubscriptionActivity import com.habitrpg.android.habitica.ui.fragments.BaseFragment import com.habitrpg.android.habitica.ui.fragments.PromoInfoFragment import com.habitrpg.android.habitica.ui.helpers.dismissKeyboard import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog -import kotlinx.coroutines.* +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import javax.inject.Inject class GemsPurchaseFragment : BaseFragment() { @@ -139,4 +144,4 @@ class GemsPurchaseFragment : BaseFragment() { alert.show() } } -} \ No newline at end of file +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/purchases/GiftBalanceGemsFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/purchases/GiftBalanceGemsFragment.kt index 0e5095fd0..2639c94b4 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/purchases/GiftBalanceGemsFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/purchases/GiftBalanceGemsFragment.kt @@ -70,7 +70,7 @@ class GiftBalanceGemsFragment : BaseFragment() { } .subscribe( { - activity?.finish() + activity?.finish() }, RxErrorHandler.handleEmptyError() ) ) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/purchases/GiftPurchaseGemsFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/purchases/GiftPurchaseGemsFragment.kt index bca9e0724..d461a1c7c 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/purchases/GiftPurchaseGemsFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/purchases/GiftPurchaseGemsFragment.kt @@ -12,7 +12,6 @@ import com.habitrpg.android.habitica.databinding.FragmentGiftGemPurchaseBinding import com.habitrpg.android.habitica.helpers.PurchaseHandler import com.habitrpg.android.habitica.helpers.PurchaseTypes import com.habitrpg.android.habitica.models.members.Member -import com.habitrpg.android.habitica.proxy.AnalyticsManager import com.habitrpg.android.habitica.ui.GemPurchaseOptionsView import com.habitrpg.android.habitica.ui.fragments.BaseFragment import kotlinx.coroutines.CoroutineScope diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/purchases/SubscriptionFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/purchases/SubscriptionFragment.kt index 795bb089a..aa5085362 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/purchases/SubscriptionFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/purchases/SubscriptionFragment.kt @@ -8,7 +8,6 @@ import android.view.View import android.view.ViewGroup import android.widget.EditText import androidx.fragment.app.Fragment -import com.android.billingclient.api.Purchase import com.android.billingclient.api.SkuDetails import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.components.UserComponent @@ -24,7 +23,6 @@ import com.habitrpg.android.habitica.helpers.PurchaseHandler import com.habitrpg.android.habitica.helpers.PurchaseTypes import com.habitrpg.android.habitica.helpers.RxErrorHandler import com.habitrpg.android.habitica.models.user.User -import com.habitrpg.android.habitica.proxy.AnalyticsManager import com.habitrpg.android.habitica.ui.activities.GiftSubscriptionActivity import com.habitrpg.android.habitica.ui.fragments.BaseFragment import com.habitrpg.android.habitica.ui.fragments.PromoInfoFragment diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/setup/AvatarSetupFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/setup/AvatarSetupFragment.kt index a194ef050..b6c57d7e6 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/setup/AvatarSetupFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/setup/AvatarSetupFragment.kt @@ -21,7 +21,7 @@ import com.habitrpg.android.habitica.ui.activities.SetupActivity import com.habitrpg.android.habitica.ui.adapter.setup.CustomizationSetupAdapter import com.habitrpg.android.habitica.ui.fragments.BaseFragment import com.habitrpg.android.habitica.ui.views.setup.AvatarCategoryView -import java.util.* +import java.util.Random import javax.inject.Inject class AvatarSetupFragment : BaseFragment() { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/setup/TaskSetupFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/setup/TaskSetupFragment.kt index 0b28f548c..63493f480 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/setup/TaskSetupFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/setup/TaskSetupFragment.kt @@ -18,7 +18,7 @@ import com.habitrpg.android.habitica.ui.activities.SetupActivity import com.habitrpg.android.habitica.ui.adapter.setup.TaskSetupAdapter import com.habitrpg.android.habitica.ui.fragments.BaseFragment import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper -import java.util.* +import java.util.Date class TaskSetupFragment : BaseFragment() { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/skills/SkillsFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/skills/SkillsFragment.kt index cca68dcd0..34c8bb487 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/skills/SkillsFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/skills/SkillsFragment.kt @@ -75,20 +75,20 @@ class SkillsFragment : BaseMainFragment() { adapter?.mana = user.stats?.mp ?: 0.0 adapter?.level = user.stats?.lvl ?: 0 adapter?.specialItems = user.items?.special - Flowable.combineLatest( - userRepository.getSkills(user), - userRepository.getSpecialItems(user), - { skills, items -> - val allEntries = mutableListOf() - for (skill in skills) { - allEntries.add(skill) - } - for (item in items) { - allEntries.add(item) - } - return@combineLatest allEntries + Flowable.combineLatest( + userRepository.getSkills(user), + userRepository.getSpecialItems(user), + { skills, items -> + val allEntries = mutableListOf() + for (skill in skills) { + allEntries.add(skill) } - ).subscribe({ skills -> adapter?.setSkillList(skills) }, RxErrorHandler.handleEmptyError()) + for (item in items) { + allEntries.add(item) + } + return@combineLatest allEntries + } + ).subscribe({ skills -> adapter?.setSkillList(skills) }, RxErrorHandler.handleEmptyError()) } private fun onSkillSelected(skill: Skill) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/InboxMessageListFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/InboxMessageListFragment.kt index 78f11d71c..ffc46f7de 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/InboxMessageListFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/InboxMessageListFragment.kt @@ -4,7 +4,12 @@ import android.content.ClipData import android.content.ClipboardManager import android.content.Context import android.os.Bundle -import android.view.* +import android.view.LayoutInflater +import android.view.Menu +import android.view.MenuInflater +import android.view.MenuItem +import android.view.View +import android.view.ViewGroup import androidx.appcompat.app.AlertDialog import androidx.fragment.app.viewModels import androidx.recyclerview.widget.RecyclerView @@ -209,73 +214,72 @@ class InboxMessageListFragment : BaseMainFragment + socialRepository.postPrivateMessage(userID, chatText) + .delay(200, TimeUnit.MILLISECONDS) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe( + { + viewModel.invalidateDataSource() + }, + { error -> + RxErrorHandler.reportError(error) + binding?.let { + val alert = HabiticaAlertDialog(it.chatBarView.context) + alert.setTitle("You cannot reply to this conversation") + alert.setMessage("This user is unable to receive your private message") + alert.addOkButton() + alert.show() } - ) - ) - } - - private fun sendMessage(chatText: String) { - viewModel.memberID?.let { userID -> - socialRepository.postPrivateMessage(userID, chatText) - .delay(200, TimeUnit.MILLISECONDS) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe( - { - viewModel.invalidateDataSource() - }, - { error -> - RxErrorHandler.reportError(error) - binding?.let { - val alert = HabiticaAlertDialog(it.chatBarView.context) - alert.setTitle("You cannot reply to this conversation") - alert.setMessage("This user is unable to receive your private message") - alert.addOkButton() - alert.show() - } - binding?.chatBarView?.message = chatText - } - ) - KeyboardUtil.dismissKeyboard(getActivity()) - } - } - - private fun setReceivingUser(chatRoomUser: String?, replyToUserUUID: String?) { - this.chatRoomUser = chatRoomUser - this.replyToUserUUID = replyToUserUUID - activity?.title = chatRoomUser - } - - private fun copyMessageToClipboard(chatMessage: ChatMessage) { - val clipMan = getActivity()?.getSystemService(Context.CLIPBOARD_SERVICE) as? ClipboardManager - val messageText = ClipData.newPlainText("Chat message", chatMessage.text) - clipMan?.setPrimaryClip(messageText) - val activity = getActivity() as? MainActivity - if (activity != null) { - showSnackbar(activity.snackbarContainer, getString(R.string.chat_message_copied), HabiticaSnackbar.SnackbarDisplayType.NORMAL) - } - } - - private fun showFlagConfirmationDialog(chatMessage: ChatMessage) { - val directions = MainNavDirections.actionGlobalReportMessageActivity(chatMessage.text ?: "", chatMessage.user ?: "", chatMessage.id, null) - MainNavigationController.navigate(directions) - } - - private fun showDeleteConfirmationDialog(chatMessage: ChatMessage) { - val context = context - if (context != null) { - AlertDialog.Builder(context) - .setTitle(R.string.confirm_delete_tag_title) - .setMessage(R.string.confirm_delete_tag_message) - .setIcon(android.R.drawable.ic_dialog_alert) - .setPositiveButton(R.string.yes) { _, _ -> socialRepository.deleteMessage(chatMessage).subscribe({ }, RxErrorHandler.handleEmptyError()) } - .setNegativeButton(R.string.no, null).show() - } - } - - private fun openProfile() { - replyToUserUUID?.let { FullProfileActivity.open(it) } + binding?.chatBarView?.message = chatText + } + ) + KeyboardUtil.dismissKeyboard(getActivity()) } } - \ No newline at end of file + + private fun setReceivingUser(chatRoomUser: String?, replyToUserUUID: String?) { + this.chatRoomUser = chatRoomUser + this.replyToUserUUID = replyToUserUUID + activity?.title = chatRoomUser + } + + private fun copyMessageToClipboard(chatMessage: ChatMessage) { + val clipMan = getActivity()?.getSystemService(Context.CLIPBOARD_SERVICE) as? ClipboardManager + val messageText = ClipData.newPlainText("Chat message", chatMessage.text) + clipMan?.setPrimaryClip(messageText) + val activity = getActivity() as? MainActivity + if (activity != null) { + showSnackbar(activity.snackbarContainer, getString(R.string.chat_message_copied), HabiticaSnackbar.SnackbarDisplayType.NORMAL) + } + } + + private fun showFlagConfirmationDialog(chatMessage: ChatMessage) { + val directions = MainNavDirections.actionGlobalReportMessageActivity(chatMessage.text ?: "", chatMessage.user ?: "", chatMessage.id, null) + MainNavigationController.navigate(directions) + } + + private fun showDeleteConfirmationDialog(chatMessage: ChatMessage) { + val context = context + if (context != null) { + AlertDialog.Builder(context) + .setTitle(R.string.confirm_delete_tag_title) + .setMessage(R.string.confirm_delete_tag_message) + .setIcon(android.R.drawable.ic_dialog_alert) + .setPositiveButton(R.string.yes) { _, _ -> socialRepository.deleteMessage(chatMessage).subscribe({ }, RxErrorHandler.handleEmptyError()) } + .setNegativeButton(R.string.no, null).show() + } + } + + private fun openProfile() { + replyToUserUUID?.let { FullProfileActivity.open(it) } + } +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/InboxOverviewFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/InboxOverviewFragment.kt index ec808c326..56ff92980 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/InboxOverviewFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/InboxOverviewFragment.kt @@ -2,7 +2,12 @@ package com.habitrpg.android.habitica.ui.fragments.social import android.content.Context import android.os.Bundle -import android.view.* +import android.view.LayoutInflater +import android.view.Menu +import android.view.MenuInflater +import android.view.MenuItem +import android.view.View +import android.view.ViewGroup import android.widget.TextView import com.habitrpg.android.habitica.BuildConfig import com.habitrpg.android.habitica.R diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/TavernFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/TavernFragment.kt index 1b6e1518c..79c21b789 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/TavernFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/TavernFragment.kt @@ -1,7 +1,12 @@ package com.habitrpg.android.habitica.ui.fragments.social import android.os.Bundle -import android.view.* +import android.view.LayoutInflater +import android.view.Menu +import android.view.MenuInflater +import android.view.MenuItem +import android.view.View +import android.view.ViewGroup import androidx.fragment.app.Fragment import androidx.fragment.app.viewModels import androidx.viewpager2.adapter.FragmentStateAdapter diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeDetailFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeDetailFragment.kt index 943295fc7..47356011e 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeDetailFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeDetailFragment.kt @@ -4,7 +4,12 @@ import android.content.Intent import android.content.pm.PackageManager import android.os.Bundle import android.text.method.LinkMovementMethod -import android.view.* +import android.view.LayoutInflater +import android.view.Menu +import android.view.MenuInflater +import android.view.MenuItem +import android.view.View +import android.view.ViewGroup import androidx.core.net.toUri import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.components.UserComponent @@ -33,7 +38,6 @@ import com.habitrpg.android.habitica.ui.viewmodels.MainUserViewModel import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog import retrofit2.HttpException -import java.util.* import javax.inject.Inject class ChallengeDetailFragment : BaseMainFragment() { @@ -45,7 +49,6 @@ class ChallengeDetailFragment : BaseMainFragment @Inject lateinit var userViewModel: MainUserViewModel - override var binding: FragmentChallengeDetailBinding? = null override fun createBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentChallengeDetailBinding { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengesOverviewFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengesOverviewFragment.kt index d0f7e6166..017e98ce4 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengesOverviewFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengesOverviewFragment.kt @@ -2,7 +2,12 @@ package com.habitrpg.android.habitica.ui.fragments.social.challenges import android.content.Intent import android.os.Bundle -import android.view.* +import android.view.LayoutInflater +import android.view.Menu +import android.view.MenuInflater +import android.view.MenuItem +import android.view.View +import android.view.ViewGroup import android.widget.RelativeLayout import android.widget.TextView import androidx.core.view.MenuItemCompat diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/guilds/GuildDetailFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/guilds/GuildDetailFragment.kt index d3d52d89d..1ada04192 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/guilds/GuildDetailFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/guilds/GuildDetailFragment.kt @@ -33,7 +33,6 @@ import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay import kotlinx.coroutines.launch -import java.util.* import javax.inject.Inject import javax.inject.Named diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/guilds/GuildFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/guilds/GuildFragment.kt index 99a65ddbe..7067f3de7 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/guilds/GuildFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/guilds/GuildFragment.kt @@ -3,7 +3,12 @@ package com.habitrpg.android.habitica.ui.fragments.social.guilds import android.app.Activity import android.content.Intent import android.os.Bundle -import android.view.* +import android.view.LayoutInflater +import android.view.Menu +import android.view.MenuInflater +import android.view.MenuItem +import android.view.View +import android.view.ViewGroup import androidx.activity.result.contract.ActivityResultContracts import androidx.fragment.app.Fragment import androidx.fragment.app.viewModels diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/guilds/GuildListFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/guilds/GuildListFragment.kt index 0327db707..774ece179 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/guilds/GuildListFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/guilds/GuildListFragment.kt @@ -1,7 +1,9 @@ package com.habitrpg.android.habitica.ui.fragments.social.guilds import android.os.Bundle -import android.view.* +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup import androidx.appcompat.widget.SearchView import androidx.swiperefreshlayout.widget.SwipeRefreshLayout import com.habitrpg.android.habitica.R diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/guilds/GuildOverviewFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/guilds/GuildOverviewFragment.kt index 30b6c980d..517bd239b 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/guilds/GuildOverviewFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/guilds/GuildOverviewFragment.kt @@ -3,7 +3,12 @@ package com.habitrpg.android.habitica.ui.fragments.social.guilds import android.content.Intent import android.content.pm.PackageManager import android.os.Bundle -import android.view.* +import android.view.LayoutInflater +import android.view.Menu +import android.view.MenuInflater +import android.view.MenuItem +import android.view.View +import android.view.ViewGroup import androidx.appcompat.widget.SearchView import androidx.core.content.ContextCompat import androidx.core.net.toUri diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/NoPartyFragmentFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/NoPartyFragmentFragment.kt index 8ca468010..cdb9e1fb6 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/NoPartyFragmentFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/NoPartyFragmentFragment.kt @@ -24,7 +24,6 @@ import com.habitrpg.android.habitica.databinding.FragmentNoPartyBinding import com.habitrpg.android.habitica.helpers.AppConfigManager import com.habitrpg.android.habitica.helpers.MainNavigationController import com.habitrpg.android.habitica.helpers.RxErrorHandler -import com.habitrpg.android.habitica.models.user.User import com.habitrpg.android.habitica.ui.AvatarView import com.habitrpg.android.habitica.ui.activities.GroupFormActivity import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyFragment.kt index 9aa943813..4178d67dd 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyFragment.kt @@ -3,7 +3,12 @@ package com.habitrpg.android.habitica.ui.fragments.social.party import android.app.Activity import android.content.Intent import android.os.Bundle -import android.view.* +import android.view.LayoutInflater +import android.view.Menu +import android.view.MenuInflater +import android.view.MenuItem +import android.view.View +import android.view.ViewGroup import androidx.activity.result.contract.ActivityResultContracts import androidx.fragment.app.Fragment import androidx.fragment.app.viewModels @@ -20,7 +25,6 @@ import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment import com.habitrpg.android.habitica.ui.fragments.social.ChatFragment import com.habitrpg.android.habitica.ui.viewmodels.GroupViewType import com.habitrpg.android.habitica.ui.viewmodels.PartyViewModel -import java.util.* class PartyFragment : BaseMainFragment() { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyInviteFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyInviteFragment.kt index 54163a54d..d26464b6c 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyInviteFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyInviteFragment.kt @@ -11,7 +11,6 @@ import com.habitrpg.android.habitica.components.UserComponent import com.habitrpg.android.habitica.databinding.FragmentPartyInviteBinding import com.habitrpg.android.habitica.helpers.AppConfigManager import com.habitrpg.android.habitica.ui.fragments.BaseFragment -import java.util.* import javax.inject.Inject class PartyInviteFragment : BaseFragment() { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/support/BugFixFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/support/BugFixFragment.kt index 53e4b2036..e1e9e072f 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/support/BugFixFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/support/BugFixFragment.kt @@ -113,8 +113,8 @@ class BugFixFragment : BaseMainFragment() { val manufacturer = deviceInfo?.manufacturer ?: Build.MANUFACTURER val newLine = "%0D%0A" var bodyOfEmail = Uri.encode("Device: $manufacturer $deviceName") + - newLine + Uri.encode("Android Version: $version") + - newLine + Uri.encode( + newLine + Uri.encode("Android Version: $version") + + newLine + Uri.encode( "AppVersion: " + getString( R.string.version_info, versionName, @@ -129,14 +129,18 @@ class BugFixFragment : BaseMainFragment() { userViewModel.user.value?.let { user -> bodyOfEmail += newLine + Uri.encode("Level: " + (user.stats?.lvl ?: 0)) + - newLine + Uri.encode( - "Class: " + (if (user.preferences?.disableClasses == true) "Disabled" else (user.stats?.habitClass - ?: "None")) + newLine + Uri.encode( + "Class: " + ( + if (user.preferences?.disableClasses == true) "Disabled" else ( + user.stats?.habitClass + ?: "None" + ) + ) ) + - newLine + Uri.encode("Is in Inn: " + (user.preferences?.sleep ?: false)) + - newLine + Uri.encode("Uses Costume: " + (user.preferences?.costume ?: false)) + - newLine + Uri.encode("Custom Day Start: " + (user.preferences?.dayStart ?: 0)) + - newLine + Uri.encode( + newLine + Uri.encode("Is in Inn: " + (user.preferences?.sleep ?: false)) + + newLine + Uri.encode("Uses Costume: " + (user.preferences?.costume ?: false)) + + newLine + Uri.encode("Custom Day Start: " + (user.preferences?.dayStart ?: 0)) + + newLine + Uri.encode( "Timezone Offset: " + (user.preferences?.timezoneOffset ?: 0) ) } @@ -146,8 +150,8 @@ class BugFixFragment : BaseMainFragment() { activity?.let { val emailIntent = Intent(Intent.ACTION_SENDTO) val mailto = "mailto:" + appConfigManager.supportEmail() + - "?subject=" + Uri.encode(subject) + - "&body=" + bodyOfEmail + "?subject=" + Uri.encode(subject) + + "&body=" + bodyOfEmail emailIntent.data = Uri.parse(mailto) startActivity(Intent.createChooser(emailIntent, "Choose an Email client:")) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/RewardsRecyclerviewFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/RewardsRecyclerviewFragment.kt index 6b47aa4a3..53bc688d3 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/RewardsRecyclerviewFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/RewardsRecyclerviewFragment.kt @@ -22,7 +22,6 @@ import com.habitrpg.android.habitica.ui.adapter.tasks.RewardsRecyclerViewAdapter import com.habitrpg.android.habitica.ui.helpers.SafeDefaultItemAnimator import com.habitrpg.android.habitica.ui.views.HabiticaSnackbar import io.reactivex.rxjava3.functions.Consumer -import java.util.* class RewardsRecyclerviewFragment : TaskRecyclerViewFragment() { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.kt index 4fb5c43c1..cf97bfe94 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.kt @@ -9,10 +9,8 @@ import android.text.format.DateUtils import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.core.app.ActivityOptionsCompat import androidx.core.content.ContextCompat import androidx.core.content.edit -import androidx.core.util.Pair import androidx.recyclerview.widget.ItemTouchHelper import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView.NO_POSITION @@ -25,7 +23,13 @@ import com.habitrpg.android.habitica.data.UserRepository import com.habitrpg.android.habitica.databinding.FragmentRefreshRecyclerviewBinding import com.habitrpg.android.habitica.extensions.setScaledPadding import com.habitrpg.android.habitica.extensions.subscribeWithErrorHandler -import com.habitrpg.android.habitica.helpers.* +import com.habitrpg.android.habitica.helpers.AmplitudeManager +import com.habitrpg.android.habitica.helpers.AppConfigManager +import com.habitrpg.android.habitica.helpers.HapticFeedbackManager +import com.habitrpg.android.habitica.helpers.MainNavigationController +import com.habitrpg.android.habitica.helpers.RxErrorHandler +import com.habitrpg.android.habitica.helpers.SoundManager +import com.habitrpg.android.habitica.helpers.TaskFilterHelper import com.habitrpg.android.habitica.models.responses.TaskDirection import com.habitrpg.android.habitica.models.responses.TaskScoringResult import com.habitrpg.android.habitica.models.tasks.Task @@ -33,7 +37,11 @@ import com.habitrpg.android.habitica.models.tasks.TaskType import com.habitrpg.android.habitica.ui.activities.MainActivity import com.habitrpg.android.habitica.ui.activities.TaskFormActivity import com.habitrpg.android.habitica.ui.adapter.BaseRecyclerViewAdapter -import com.habitrpg.android.habitica.ui.adapter.tasks.* +import com.habitrpg.android.habitica.ui.adapter.tasks.DailiesRecyclerViewHolder +import com.habitrpg.android.habitica.ui.adapter.tasks.HabitsRecyclerViewAdapter +import com.habitrpg.android.habitica.ui.adapter.tasks.RewardsRecyclerViewAdapter +import com.habitrpg.android.habitica.ui.adapter.tasks.TaskRecyclerViewAdapter +import com.habitrpg.android.habitica.ui.adapter.tasks.TodosRecyclerViewAdapter import com.habitrpg.android.habitica.ui.fragments.BaseFragment import com.habitrpg.android.habitica.ui.helpers.EmptyItem import com.habitrpg.android.habitica.ui.helpers.SafeDefaultItemAnimator @@ -43,7 +51,7 @@ import com.habitrpg.android.habitica.ui.views.HabiticaSnackbar import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.disposables.CompositeDisposable -import java.util.* +import java.util.Date import java.util.concurrent.TimeUnit import javax.inject.Inject @@ -291,10 +299,12 @@ open class TaskRecyclerViewFragment : BaseFragment(), SearchView.OnQueryTextListener, HabiticaBottomNavigationViewListener { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TeamBoardFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TeamBoardFragment.kt index 826877425..6117b5b96 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TeamBoardFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TeamBoardFragment.kt @@ -28,7 +28,6 @@ import com.habitrpg.android.habitica.helpers.AppConfigManager import com.habitrpg.android.habitica.helpers.MainNavigationController import com.habitrpg.android.habitica.helpers.RxErrorHandler import com.habitrpg.android.habitica.helpers.TaskFilterHelper -import com.habitrpg.android.habitica.models.tasks.Task import com.habitrpg.android.habitica.models.tasks.TaskType import com.habitrpg.android.habitica.ui.activities.TaskFormActivity import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment @@ -36,7 +35,6 @@ import com.habitrpg.android.habitica.ui.views.navigation.HabiticaBottomNavigatio import com.habitrpg.android.habitica.ui.views.tasks.TaskFilterDialog import io.reactivex.rxjava3.disposables.Disposable import java.util.Date -import java.util.HashMap import java.util.WeakHashMap import javax.inject.Inject diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/helpers/AutocompleteAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/helpers/AutocompleteAdapter.kt index 1e4733879..c3bd2a304 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/helpers/AutocompleteAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/helpers/AutocompleteAdapter.kt @@ -16,7 +16,7 @@ import com.habitrpg.android.habitica.models.social.FindUsernameResult import com.habitrpg.android.habitica.models.user.Authentication import com.habitrpg.android.habitica.models.user.Profile import com.habitrpg.android.habitica.ui.views.social.UsernameLabel -import java.util.* +import java.util.Date class AutocompleteAdapter(val context: Context, val socialRepository: SocialRepository? = null, var autocompleteContext: String? = null, var groupID: String? = null, val remoteAutocomplete: Boolean = false) : BaseAdapter(), Filterable { var chatMessages: List = arrayListOf() diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/helpers/DataBindingUtils.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/helpers/DataBindingUtils.kt index f13f4e4f7..dcf3c9b79 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/helpers/DataBindingUtils.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/helpers/DataBindingUtils.kt @@ -15,8 +15,8 @@ import coil.request.ImageRequest import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.extensions.setTintWith import com.habitrpg.android.habitica.helpers.AppConfigManager -import java.util.* -import kotlin.collections.HashMap +import java.util.Collections +import java.util.Date fun ImageView.loadImage(imageName: String?, imageFormat: String? = null) { DataBindingUtils.loadImage(this, imageName, imageFormat) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/helpers/SafeDefaultItemAnimator.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/helpers/SafeDefaultItemAnimator.kt index a6d22a0b1..389c47c23 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/helpers/SafeDefaultItemAnimator.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/helpers/SafeDefaultItemAnimator.kt @@ -9,7 +9,6 @@ import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.SimpleItemAnimator import com.habitrpg.shared.habitica.HLogger import com.habitrpg.shared.habitica.LogLevel -import java.util.* /** * Created by phillip on 02.10.17. diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/helpers/ToolbarColorHelper.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/helpers/ToolbarColorHelper.kt index 83960121f..4130ad556 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/helpers/ToolbarColorHelper.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/helpers/ToolbarColorHelper.kt @@ -29,7 +29,6 @@ import androidx.preference.PreferenceManager import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.extensions.getThemeColor import com.habitrpg.android.habitica.extensions.waitForLayout -import java.util.* /** * Helper class that iterates through Toolbar views, and sets dynamically icons and texts color diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/menu/BottomSheetMenu.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/menu/BottomSheetMenu.kt index 56b68627a..2bf3e8fc5 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/menu/BottomSheetMenu.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/menu/BottomSheetMenu.kt @@ -5,8 +5,6 @@ import android.view.View import com.google.android.material.bottomsheet.BottomSheetBehavior import com.google.android.material.bottomsheet.BottomSheetDialog import com.habitrpg.android.habitica.databinding.MenuBottomSheetBinding -import android.view.ViewTreeObserver.OnGlobalLayoutListener - class BottomSheetMenu(context: Context) : BottomSheetDialog(context), View.OnClickListener { private var binding = MenuBottomSheetBinding.inflate(layoutInflater) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/MountViewHolder.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/MountViewHolder.kt index 8a4e33a69..9202c484b 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/MountViewHolder.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/MountViewHolder.kt @@ -9,7 +9,6 @@ import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.databinding.MountOverviewItemBinding import com.habitrpg.android.habitica.extensions.inflate import com.habitrpg.android.habitica.models.inventory.Mount -import com.habitrpg.android.habitica.models.user.User import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils import com.habitrpg.android.habitica.ui.menu.BottomSheetMenu import com.habitrpg.android.habitica.ui.menu.BottomSheetMenuItem diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/PetViewHolder.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/PetViewHolder.kt index f4bb3c0c2..937f15308 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/PetViewHolder.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/PetViewHolder.kt @@ -8,8 +8,11 @@ import androidx.core.graphics.drawable.toBitmap import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.databinding.PetDetailItemBinding import com.habitrpg.android.habitica.extensions.inflate -import com.habitrpg.android.habitica.models.inventory.* -import com.habitrpg.android.habitica.models.user.User +import com.habitrpg.android.habitica.models.inventory.Animal +import com.habitrpg.android.habitica.models.inventory.Egg +import com.habitrpg.android.habitica.models.inventory.Food +import com.habitrpg.android.habitica.models.inventory.HatchingPotion +import com.habitrpg.android.habitica.models.inventory.Pet import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils import com.habitrpg.android.habitica.ui.menu.BottomSheetMenu import com.habitrpg.android.habitica.ui.menu.BottomSheetMenuItem diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/SectionViewHolder.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/SectionViewHolder.kt index 69ecbb89a..f49bfb1b5 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/SectionViewHolder.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/SectionViewHolder.kt @@ -3,7 +3,12 @@ package com.habitrpg.android.habitica.ui.viewHolders import android.content.Context import android.view.View import android.view.ViewGroup -import android.widget.* +import android.widget.AdapterView +import android.widget.ArrayAdapter +import android.widget.Button +import android.widget.LinearLayout +import android.widget.Spinner +import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.extensions.inflate diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/BaseTaskViewHolder.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/BaseTaskViewHolder.kt index 5ccfa61bf..e20232020 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/BaseTaskViewHolder.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/BaseTaskViewHolder.kt @@ -6,7 +6,12 @@ import android.text.method.LinkMovementMethod import android.view.MotionEvent import android.view.View import android.view.ViewGroup -import android.widget.* +import android.widget.Button +import android.widget.ImageButton +import android.widget.ImageView +import android.widget.LinearLayout +import android.widget.ProgressBar +import android.widget.TextView import androidx.appcompat.widget.AppCompatImageView import androidx.core.content.ContextCompat import com.habitrpg.android.habitica.R @@ -15,7 +20,8 @@ import com.habitrpg.android.habitica.extensions.getThemeColor import com.habitrpg.android.habitica.helpers.RxErrorHandler import com.habitrpg.android.habitica.models.responses.TaskDirection import com.habitrpg.android.habitica.models.tasks.Task -import com.habitrpg.android.habitica.ui.helpers.* +import com.habitrpg.android.habitica.ui.helpers.MarkdownParser +import com.habitrpg.android.habitica.ui.helpers.setParsedMarkdown import com.habitrpg.android.habitica.ui.viewHolders.BindableViewHolder import com.habitrpg.android.habitica.ui.views.EllipsisTextView import io.noties.markwon.utils.NoCopySpannableFactory diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/ChecklistedViewHolder.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/ChecklistedViewHolder.kt index 460a993ae..470dab600 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/ChecklistedViewHolder.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/ChecklistedViewHolder.kt @@ -2,8 +2,12 @@ package com.habitrpg.android.habitica.ui.viewHolders.tasks import android.content.Context import android.graphics.PorterDuff -import android.view.* -import android.widget.* +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.LinearLayout +import android.widget.TextView import androidx.core.content.ContextCompat import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/DailyViewHolder.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/DailyViewHolder.kt index 732202d54..a708f4cfa 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/DailyViewHolder.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/DailyViewHolder.kt @@ -5,7 +5,8 @@ import com.habitrpg.android.habitica.models.responses.TaskDirection import com.habitrpg.android.habitica.models.tasks.ChecklistItem import com.habitrpg.android.habitica.models.tasks.Task import java.text.DateFormat -import java.util.* +import java.util.Calendar +import java.util.Date class DailyViewHolder(itemView: View, scoreTaskFunc: ((Task, TaskDirection) -> Unit), scoreChecklistItemFunc: ((Task, ChecklistItem) -> Unit), openTaskFunc: ((Pair) -> Unit), brokenTaskFunc: ((Task) -> Unit)) : ChecklistedViewHolder(itemView, scoreTaskFunc, scoreChecklistItemFunc, openTaskFunc, brokenTaskFunc) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/AuthenticationViewModel.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/AuthenticationViewModel.kt index ecfab96be..811e2e2bb 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/AuthenticationViewModel.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/AuthenticationViewModel.kt @@ -65,7 +65,6 @@ class AuthenticationViewModel() { private var compositeSubscription = CompositeDisposable() - private var callbackManager = CallbackManager.Factory.create() var googleEmail: String? = null private var loginManager = LoginManager.getInstance() @@ -92,7 +91,6 @@ class AuthenticationViewModel() { onSuccess(response) } else -> { - } } }.show() @@ -108,7 +106,7 @@ class AuthenticationViewModel() { compositeSubscription.add( apiClient.connectSocial("facebook", accessToken?.userId ?: "", accessToken?.token ?: "") .subscribe({ - onSuccess(it) + onSuccess(it) }, RxErrorHandler.handleEmptyError()) ) } @@ -136,7 +134,7 @@ class AuthenticationViewModel() { compositeSubscription.add( apiClient.connectSocial("facebook", accessToken.userId, accessToken.token) .subscribe({ - onSuccess(it) + onSuccess(it) }, { }) ) } @@ -169,7 +167,7 @@ class AuthenticationViewModel() { fun handleGoogleLoginResult( activity: Activity, recoverFromPlayServicesErrorResult: ActivityResultLauncher?, - onSuccess: (User, Boolean) -> Unit + onSuccess: (User, Boolean) -> Unit ) { val scopesString = Scopes.PROFILE + " " + Scopes.EMAIL val scopes = "oauth2:$scopesString" @@ -196,15 +194,17 @@ class AuthenticationViewModel() { .flatMap { userRepository.retrieveUser(true, true) } .subscribe( { - onSuccess(it, newUser) + onSuccess(it, newUser) }, { throwable -> if (recoverFromPlayServicesErrorResult == null) return@subscribe throwable.cause?.let { if (GoogleAuthException::class.java.isAssignableFrom(it.javaClass)) { - handleGoogleAuthException(throwable.cause as GoogleAuthException, - activity, - recoverFromPlayServicesErrorResult) + handleGoogleAuthException( + throwable.cause as GoogleAuthException, + activity, + recoverFromPlayServicesErrorResult + ) } } } @@ -235,16 +235,15 @@ class AuthenticationViewModel() { recoverFromPlayServicesErrorResult.launch(intent) return } - } - private fun checkPlayServices(activity: Activity): Boolean { val googleAPI = GoogleApiAvailability.getInstance() val result = googleAPI.isGooglePlayServicesAvailable(activity) if (result != ConnectionResult.SUCCESS) { if (googleAPI.isUserResolvableError(result)) { - googleAPI.getErrorDialog(activity, result, + googleAPI.getErrorDialog( + activity, result, PLAY_SERVICES_RESOLUTION_REQUEST )?.show() } @@ -289,4 +288,4 @@ class AuthenticationViewModel() { private const val REQUEST_CODE_RECOVER_FROM_PLAY_SERVICES_ERROR = 1001 private const val PLAY_SERVICES_RESOLUTION_REQUEST = 9000 } -} \ No newline at end of file +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/BaseViewModel.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/BaseViewModel.kt index 82a6bf7d3..78c3fc71a 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/BaseViewModel.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/BaseViewModel.kt @@ -1,15 +1,12 @@ package com.habitrpg.android.habitica.ui.viewmodels import androidx.lifecycle.LiveData -import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import com.habitrpg.android.habitica.HabiticaBaseApplication import com.habitrpg.android.habitica.components.UserComponent import com.habitrpg.android.habitica.data.UserRepository import com.habitrpg.android.habitica.helpers.RxErrorHandler -import com.habitrpg.android.habitica.models.inventory.Equipment import com.habitrpg.android.habitica.models.user.User -import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.disposables.CompositeDisposable import javax.inject.Inject @@ -41,7 +38,9 @@ abstract class BaseViewModel(initializeComponent: Boolean = true) : ViewModel() internal val disposable = CompositeDisposable() fun updateUser(path: String, value: Any) { - disposable.add(userRepository.updateUser(path, value) - .subscribe({ }, RxErrorHandler.handleEmptyError())) + disposable.add( + userRepository.updateUser(path, value) + .subscribe({ }, RxErrorHandler.handleEmptyError()) + ) } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/GroupViewModel.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/GroupViewModel.kt index 81f5a3c27..d2e9feaa0 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/GroupViewModel.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/GroupViewModel.kt @@ -8,7 +8,6 @@ import com.habitrpg.android.habitica.data.ChallengeRepository import com.habitrpg.android.habitica.data.SocialRepository import com.habitrpg.android.habitica.extensions.Optional import com.habitrpg.android.habitica.extensions.asOptional -import com.habitrpg.android.habitica.extensions.filterMapEmpty import com.habitrpg.android.habitica.extensions.filterOptionalDoOnEmpty import com.habitrpg.android.habitica.helpers.MainNavigationController import com.habitrpg.android.habitica.helpers.NotificationsManager @@ -251,12 +250,15 @@ open class GroupViewModel(initializeComponent: Boolean) : BaseViewModel(initiali fun likeMessage(message: ChatMessage) { val index = _chatMessages.value?.indexOf(message) if (index == null || index < 0) return - disposable.add(socialRepository.likeMessage(message).subscribe( - { - val list = _chatMessages.value?.toMutableList() - list?.set(index, it) - _chatMessages.postValue(list) - }, RxErrorHandler.handleEmptyError())) + disposable.add( + socialRepository.likeMessage(message).subscribe( + { + val list = _chatMessages.value?.toMutableList() + list?.set(index, it) + _chatMessages.postValue(list) + }, RxErrorHandler.handleEmptyError() + ) + ) } fun deleteMessage(chatMessage: ChatMessage) { @@ -264,12 +266,14 @@ open class GroupViewModel(initializeComponent: Boolean) : BaseViewModel(initiali val list = _chatMessages.value?.toMutableList() list?.remove(chatMessage) _chatMessages.postValue(list) - disposable.add(socialRepository.deleteMessage(chatMessage).subscribe({ - }, { - list?.add(oldIndex, chatMessage) - _chatMessages.postValue(list) - RxErrorHandler.reportError(it) - })) + disposable.add( + socialRepository.deleteMessage(chatMessage).subscribe({ + }, { + list?.add(oldIndex, chatMessage) + _chatMessages.postValue(list) + RxErrorHandler.reportError(it) + }) + ) } fun postGroupChat(chatText: String, onComplete: () -> Unit, onError: () -> Unit) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/MainActivityViewModel.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/MainActivityViewModel.kt index 198e3ed12..0aaa130b0 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/MainActivityViewModel.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/MainActivityViewModel.kt @@ -20,10 +20,10 @@ import com.habitrpg.android.habitica.proxy.AnalyticsManager import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.schedulers.Schedulers import io.realm.kotlin.isValid -import java.util.* +import java.util.Date import javax.inject.Inject -class MainActivityViewModel: BaseViewModel() { +class MainActivityViewModel : BaseViewModel() { @Inject internal lateinit var hostConfig: HostConfig @Inject @@ -53,11 +53,11 @@ class MainActivityViewModel: BaseViewModel() { get() = sharedPreferences.getString("launch_screen", "") var preferenceLanguage: String? get() = sharedPreferences.getString("language", "en") - set(value) { - sharedPreferences.edit { - putString("language", value) + set(value) { + sharedPreferences.edit { + putString("language", value) + } } - } override fun onCleared() { taskRepository.close() @@ -102,7 +102,6 @@ class MainActivityViewModel: BaseViewModel() { } } - fun logTutorialStatus(step: TutorialStep, complete: Boolean) { val additionalData = HashMap() additionalData["eventLabel"] = step.identifier + "-android" @@ -121,11 +120,12 @@ class MainActivityViewModel: BaseViewModel() { this.maintenanceService.maintenanceStatus .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) - .subscribe( { maintenanceResponse -> + .subscribe( + { maintenanceResponse -> if (maintenanceResponse == null) { return@subscribe } - onResult(maintenanceResponse) + onResult(maintenanceResponse) }, RxErrorHandler.handleEmptyError() ) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/MainUserViewModel.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/MainUserViewModel.kt index d921c4694..b8468f4b7 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/MainUserViewModel.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/MainUserViewModel.kt @@ -2,17 +2,13 @@ package com.habitrpg.android.habitica.ui.viewmodels import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData -import androidx.lifecycle.ViewModel import com.habitrpg.android.habitica.HabiticaBaseApplication -import com.habitrpg.android.habitica.components.UserComponent import com.habitrpg.android.habitica.data.UserRepository import com.habitrpg.android.habitica.helpers.RxErrorHandler -import com.habitrpg.android.habitica.models.invitations.GenericInvitation import com.habitrpg.android.habitica.models.invitations.PartyInvite import com.habitrpg.android.habitica.models.user.User import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.disposables.CompositeDisposable -import javax.inject.Inject class MainUserViewModel(val userRepository: UserRepository) { @@ -51,12 +47,16 @@ class MainUserViewModel(val userRepository: UserRepository) { internal val disposable = CompositeDisposable() internal fun loadUserFromLocal() { - disposable.add(userRepository.getUser().observeOn(AndroidSchedulers.mainThread()) - .subscribe({ _user.value = it }, RxErrorHandler.handleEmptyError())) + disposable.add( + userRepository.getUser().observeOn(AndroidSchedulers.mainThread()) + .subscribe({ _user.value = it }, RxErrorHandler.handleEmptyError()) + ) } fun updateUser(path: String, value: Any) { - disposable.add(userRepository.updateUser(path, value) - .subscribe({ }, RxErrorHandler.handleEmptyError())) + disposable.add( + userRepository.updateUser(path, value) + .subscribe({ }, RxErrorHandler.handleEmptyError()) + ) } -} \ No newline at end of file +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/NotificationsViewModel.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/NotificationsViewModel.kt index 1696cd616..7e3d88a99 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/NotificationsViewModel.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/NotificationsViewModel.kt @@ -9,7 +9,12 @@ import com.habitrpg.android.habitica.helpers.MainNavigationController import com.habitrpg.android.habitica.helpers.NotificationsManager import com.habitrpg.android.habitica.helpers.RxErrorHandler import com.habitrpg.android.habitica.models.Notification -import com.habitrpg.android.habitica.models.notifications.* +import com.habitrpg.android.habitica.models.notifications.GroupTaskRequiresApprovalData +import com.habitrpg.android.habitica.models.notifications.GuildInvitationData +import com.habitrpg.android.habitica.models.notifications.NewChatMessageData +import com.habitrpg.android.habitica.models.notifications.NewStuffData +import com.habitrpg.android.habitica.models.notifications.PartyInvitationData +import com.habitrpg.android.habitica.models.notifications.QuestInvitationData import com.habitrpg.android.habitica.models.social.UserParty import com.habitrpg.android.habitica.models.user.User import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers @@ -17,7 +22,6 @@ import io.reactivex.rxjava3.core.BackpressureStrategy import io.reactivex.rxjava3.core.Flowable import io.reactivex.rxjava3.functions.BiFunction import io.reactivex.rxjava3.subjects.BehaviorSubject -import java.util.* import javax.inject.Inject open class NotificationsViewModel : BaseViewModel() { @@ -82,7 +86,7 @@ open class NotificationsViewModel : BaseViewModel() { serverNotifications, customNotifications.toFlowable(BackpressureStrategy.LATEST), BiFunction, List, List> { - serverNotificationsList, customNotificationsList -> + serverNotificationsList, customNotificationsList -> if (serverNotificationsList.firstOrNull { notification -> notification.type == Notification.Type.NEW_STUFF.type } != null) { return@BiFunction serverNotificationsList + customNotificationsList.filter { notification -> notification.type != Notification.Type.NEW_STUFF.type } } @@ -183,13 +187,13 @@ open class NotificationsViewModel : BaseViewModel() { } private fun isCustomNewStuffNotification(notification: Notification) = - notification.id == "custom-new-stuff-notification" + notification.id == "custom-new-stuff-notification" fun dismissNotification(notification: Notification) { if (isCustomNotification(notification)) { if (isCustomNewStuffNotification(notification)) { customNotifications.onNext( - customNotifications.value?.filterNot { it.id == notification.id } + customNotifications.value?.filterNot { it.id == notification.id } ) } return @@ -208,7 +212,7 @@ open class NotificationsViewModel : BaseViewModel() { .map { it.id } val customNewStuffNotification = notifications - .firstOrNull { isCustomNewStuffNotification(it) } + .firstOrNull { isCustomNewStuffNotification(it) } if (customNewStuffNotification != null) { dismissNotification(customNewStuffNotification) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/inventory/equipment/EquipmentOverviewViewModel.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/inventory/equipment/EquipmentOverviewViewModel.kt index 1d2f454e3..bece1a9a1 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/inventory/equipment/EquipmentOverviewViewModel.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/inventory/equipment/EquipmentOverviewViewModel.kt @@ -8,7 +8,7 @@ import com.habitrpg.android.habitica.models.inventory.Equipment import com.habitrpg.android.habitica.ui.viewmodels.BaseViewModel import javax.inject.Inject -class EquipmentOverviewViewModel(savedStateHandle: SavedStateHandle): BaseViewModel() { +class EquipmentOverviewViewModel(savedStateHandle: SavedStateHandle) : BaseViewModel() { val usesAutoEquip: Boolean get() = user.value?.preferences?.autoEquip == true val usesCostume: Boolean @@ -22,8 +22,10 @@ class EquipmentOverviewViewModel(savedStateHandle: SavedStateHandle): BaseViewMo } fun getGear(key: String, onSuccess: (Equipment) -> Unit) { - disposable.add(inventoryRepository.getEquipment(key).subscribe( { - onSuccess(it) - }, RxErrorHandler.handleEmptyError())) + disposable.add( + inventoryRepository.getEquipment(key).subscribe({ + onSuccess(it) + }, RxErrorHandler.handleEmptyError()) + ) } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/ExtraLabelPreference.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/ExtraLabelPreference.kt index 4a5a5cdc7..6e007a492 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/ExtraLabelPreference.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/ExtraLabelPreference.kt @@ -26,4 +26,4 @@ class ExtraLabelPreference( textView?.setTextColor(it) } } -} \ No newline at end of file +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaIcons.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaIcons.java index b43e71bea..2dc734973 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaIcons.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaIcons.java @@ -1,28 +1,27 @@ package com.habitrpg.android.habitica.ui.views; import android.content.Context; -import android.graphics.Paint; -import android.graphics.PorterDuff; -import android.graphics.PorterDuffXfermode; -import android.graphics.Matrix; -import android.graphics.PointF; -import android.graphics.RectF; -import android.graphics.Shader; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.BitmapShader; import android.graphics.BlurMaskFilter; import android.graphics.Canvas; import android.graphics.Color; -import android.graphics.Path; import android.graphics.DashPathEffect; +import android.graphics.Matrix; +import android.graphics.Paint; +import android.graphics.Path; +import android.graphics.PointF; +import android.graphics.PorterDuff; +import android.graphics.PorterDuffXfermode; +import android.graphics.RectF; +import android.graphics.Shader; import android.text.Layout; import android.text.StaticLayout; import android.text.TextPaint; -import java.util.Stack; + import java.lang.ref.WeakReference; -import android.graphics.Typeface; -import android.content.res.AssetManager; +import java.util.Stack; diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaIconsHelper.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaIconsHelper.java index 8d4edab90..4b068125e 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaIconsHelper.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaIconsHelper.java @@ -5,6 +5,7 @@ import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.RectF; + import androidx.annotation.ColorInt; /** diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaSnackbar.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaSnackbar.kt index f5ec707f5..31c420fb5 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaSnackbar.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaSnackbar.kt @@ -6,7 +6,9 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.view.animation.AccelerateInterpolator -import android.widget.* +import android.widget.ImageView +import android.widget.LinearLayout +import android.widget.TextView import androidx.annotation.ColorInt import androidx.core.content.ContextCompat import androidx.core.view.ViewCompat @@ -204,4 +206,4 @@ interface SnackbarActivity { ) { HabiticaSnackbar.showSnackbar(snackbarContainer(), leftImage, title, content, specialView, rightIcon, rightTextColor, rightText, displayType, isCelebratory) } -} \ No newline at end of file +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/RoundedCornerLayout.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/RoundedCornerLayout.kt index 2834d6830..1ed0422dd 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/RoundedCornerLayout.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/RoundedCornerLayout.kt @@ -1,7 +1,13 @@ package com.habitrpg.android.habitica.ui.views import android.content.Context -import android.graphics.* +import android.graphics.Bitmap +import android.graphics.Canvas +import android.graphics.Color +import android.graphics.Paint +import android.graphics.PorterDuff +import android.graphics.PorterDuffXfermode +import android.graphics.RectF import android.util.AttributeSet import android.util.TypedValue import android.widget.FrameLayout diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/Typewriter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/Typewriter.kt index e12e12b42..beb762365 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/Typewriter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/Typewriter.kt @@ -7,7 +7,11 @@ import android.text.style.ForegroundColorSpan import android.util.AttributeSet import androidx.core.content.ContextCompat import com.habitrpg.android.habitica.R -import kotlinx.coroutines.* +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.Job +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch // http://stackoverflow.com/a/6700718/1315039 class Typewriter : androidx.appcompat.widget.AppCompatTextView { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/ValidatingEditText.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/ValidatingEditText.kt index b2dfc7141..9d1bd462b 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/ValidatingEditText.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/ValidatingEditText.kt @@ -11,7 +11,8 @@ import com.habitrpg.android.habitica.databinding.ValidatingEditTextBinding import com.habitrpg.android.habitica.extensions.layoutInflater class ValidatingEditText @JvmOverloads constructor( - context: Context, attrs: AttributeSet? = null + context: Context, + attrs: AttributeSet? = null ) : LinearLayout(context, attrs) { private var binding: ValidatingEditTextBinding = ValidatingEditTextBinding.inflate(context.layoutInflater, this) @@ -28,7 +29,7 @@ class ValidatingEditText @JvmOverloads constructor( var validator: ((String?) -> Boolean)? = null val isValid: Boolean - get() = validator?.invoke(text) != false + get() = validator?.invoke(text) != false init { orientation = VERTICAL @@ -42,7 +43,6 @@ class ValidatingEditText @JvmOverloads constructor( binding.editText.inputType = attributes.getInt(R.styleable.ValidatingEditText_android_inputType, InputType.TYPE_CLASS_TEXT) } - binding.editText.setOnFocusChangeListener { _, isEditing -> if (isEditing) return@setOnFocusChangeListener showErrorIfNecessary() @@ -61,4 +61,4 @@ class ValidatingEditText @JvmOverloads constructor( binding.errorText.visibility = View.VISIBLE } } -} \ No newline at end of file +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/dialogs/HabiticaAlertDialog.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/dialogs/HabiticaAlertDialog.kt index 84cb87729..597f2492d 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/dialogs/HabiticaAlertDialog.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/dialogs/HabiticaAlertDialog.kt @@ -3,9 +3,18 @@ package com.habitrpg.android.habitica.ui.views.dialogs import android.app.Activity import android.content.Context import android.text.method.ScrollingMovementMethod -import android.view.* +import android.view.ContextThemeWrapper +import android.view.Gravity +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.view.WindowManager import android.view.animation.AccelerateInterpolator -import android.widget.* +import android.widget.Button +import android.widget.FrameLayout +import android.widget.LinearLayout +import android.widget.RelativeLayout +import android.widget.TextView import androidx.appcompat.app.AlertDialog import androidx.core.content.ContextCompat import androidx.core.view.children diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/dialogs/PetSuggestHatchDialog.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/dialogs/PetSuggestHatchDialog.kt index 408825289..b619de734 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/dialogs/PetSuggestHatchDialog.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/dialogs/PetSuggestHatchDialog.kt @@ -23,7 +23,7 @@ import com.habitrpg.android.habitica.ui.views.CurrencyView import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.core.Flowable import io.reactivex.rxjava3.core.Observable -import java.util.* +import java.util.Locale import javax.inject.Inject class PetSuggestHatchDialog(context: Context) : HabiticaAlertDialog(context) { @@ -174,7 +174,8 @@ class PetSuggestHatchDialog(context: Context) : HabiticaAlertDialog(context) { HatchPetUseCase.RequestValues( potion, egg, it - )).subscribeWithErrorHandler {} + ) + ).subscribeWithErrorHandler {} } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/insufficientCurrency/InsufficientGemsDialog.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/insufficientCurrency/InsufficientGemsDialog.kt index fd50b94a7..24f48fa2f 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/insufficientCurrency/InsufficientGemsDialog.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/insufficientCurrency/InsufficientGemsDialog.kt @@ -78,7 +78,6 @@ class InsufficientGemsDialog(context: Context, var gemPrice: Int) : Insufficient } } - addButton(R.string.see_other_options, false) { _, _ -> MainNavigationController.navigate(R.id.gemPurchaseActivity, bundleOf(Pair("openSubscription", false))) } } else { contentView.findViewById(R.id.purchase_wrapper).visibility = View.GONE diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/login/LoginBackgroundView.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/login/LoginBackgroundView.kt index 38a6d36db..6090255ab 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/login/LoginBackgroundView.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/login/LoginBackgroundView.kt @@ -11,7 +11,7 @@ import android.widget.FrameLayout import android.widget.ImageView import android.widget.RelativeLayout import com.habitrpg.android.habitica.R -import java.util.* +import java.util.Random class LoginBackgroundView(context: Context, attrs: AttributeSet?) : RelativeLayout(context, attrs) { private val random: Random = Random() diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialog.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialog.kt index db0c2da51..3c5f39e1e 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialog.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialog.kt @@ -27,7 +27,10 @@ import com.habitrpg.android.habitica.models.shops.Shop import com.habitrpg.android.habitica.models.shops.ShopItem import com.habitrpg.android.habitica.models.user.OwnedItem import com.habitrpg.android.habitica.models.user.User -import com.habitrpg.android.habitica.ui.views.* +import com.habitrpg.android.habitica.ui.views.CurrencyView +import com.habitrpg.android.habitica.ui.views.CurrencyViews +import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper +import com.habitrpg.android.habitica.ui.views.SnackbarActivity import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog import com.habitrpg.android.habitica.ui.views.insufficientCurrency.InsufficientGemsDialog import com.habitrpg.android.habitica.ui.views.insufficientCurrency.InsufficientGoldDialog @@ -37,7 +40,11 @@ import com.habitrpg.android.habitica.ui.views.tasks.form.StepperValueFormView import io.reactivex.rxjava3.core.Flowable import io.reactivex.rxjava3.core.Maybe import io.reactivex.rxjava3.disposables.CompositeDisposable -import kotlinx.coroutines.* +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.Job +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch import java.util.* import javax.inject.Inject import kotlin.math.max diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/social/QuestMenuView.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/social/QuestMenuView.kt index 3e80cb578..803aa3918 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/social/QuestMenuView.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/social/QuestMenuView.kt @@ -3,19 +3,16 @@ package com.habitrpg.android.habitica.ui.views.social import android.content.Context import android.util.AttributeSet import android.view.Gravity -import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.LinearLayout import androidx.core.content.ContextCompat -import androidx.core.content.edit import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.databinding.QuestMenuViewBinding import com.habitrpg.android.habitica.extensions.layoutInflater import com.habitrpg.android.habitica.models.inventory.Quest import com.habitrpg.android.habitica.models.inventory.QuestContent import com.habitrpg.android.habitica.models.user.User -import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper import java.util.Locale @@ -77,9 +74,9 @@ class QuestMenuView : LinearLayout { binding.topView.setBackgroundColor(questContent?.colors?.mediumColor ?: 0) binding.bossNameView.gravity = Gravity.START binding.bossNameView.layoutParams = LayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT, 1F) - //binding.bossArtView.visibility = View.GONE + // binding.bossArtView.visibility = View.GONE binding.typeTextView.setTextColor(questContent?.colors?.extraLightColor ?: 0) - //binding.closeButton.visibility = View.GONE + // binding.closeButton.visibility = View.GONE } fun showBossArt() { @@ -87,8 +84,8 @@ class QuestMenuView : LinearLayout { binding.topView.setBackgroundColor(ContextCompat.getColor(context, R.color.transparent)) binding.bossNameView.gravity = Gravity.END binding.bossNameView.layoutParams = LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) - //binding.bossArtView.visibility = View.VISIBLE + // binding.bossArtView.visibility = View.VISIBLE binding.typeTextView.setTextColor(ContextCompat.getColor(context, R.color.white)) - //binding.closeButton.visibility = View.VISIBLE + // binding.closeButton.visibility = View.VISIBLE } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/subscriptions/SubscriptionDetailsView.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/subscriptions/SubscriptionDetailsView.kt index 4d701293b..9564680a1 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/subscriptions/SubscriptionDetailsView.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/subscriptions/SubscriptionDetailsView.kt @@ -13,7 +13,7 @@ import com.habitrpg.android.habitica.extensions.layoutInflater import com.habitrpg.android.habitica.models.user.SubscriptionPlan import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper import java.text.DateFormat -import java.util.* +import java.util.Date class SubscriptionDetailsView : LinearLayout { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/TaskFilterDialog.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/TaskFilterDialog.kt index 9d268a3d9..876b0374a 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/TaskFilterDialog.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/TaskFilterDialog.kt @@ -8,7 +8,13 @@ import android.util.TypedValue import android.view.LayoutInflater import android.view.View import android.view.WindowManager -import android.widget.* +import android.widget.Button +import android.widget.EditText +import android.widget.ImageButton +import android.widget.LinearLayout +import android.widget.RadioButton +import android.widget.RadioGroup +import android.widget.TextView import androidx.annotation.IdRes import androidx.appcompat.widget.AppCompatCheckBox import androidx.core.content.ContextCompat @@ -24,7 +30,7 @@ import com.habitrpg.android.habitica.models.tasks.Task import com.habitrpg.android.habitica.models.tasks.TaskType import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog import io.reactivex.rxjava3.core.Observable -import java.util.* +import java.util.UUID import javax.inject.Inject class TaskFilterDialog(context: Context, component: UserComponent?) : HabiticaAlertDialog(context), RadioGroup.OnCheckedChangeListener { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/ChecklistItemFormView.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/ChecklistItemFormView.kt index 3a028f0d9..d018cfda2 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/ChecklistItemFormView.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/ChecklistItemFormView.kt @@ -12,7 +12,10 @@ import android.widget.LinearLayout import androidx.core.content.ContextCompat import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.databinding.TaskFormChecklistItemBinding -import com.habitrpg.android.habitica.extensions.* +import com.habitrpg.android.habitica.extensions.OnChangeTextWatcher +import com.habitrpg.android.habitica.extensions.dpToPx +import com.habitrpg.android.habitica.extensions.getThemeColor +import com.habitrpg.android.habitica.extensions.layoutInflater import com.habitrpg.android.habitica.models.tasks.ChecklistItem class ChecklistItemFormView @JvmOverloads constructor( diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/ReminderContainer.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/ReminderContainer.kt index 494b0bb90..4fdf19285 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/ReminderContainer.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/ReminderContainer.kt @@ -9,7 +9,6 @@ import androidx.core.view.children import androidx.core.view.updateMargins import com.habitrpg.android.habitica.extensions.dpToPx import com.habitrpg.android.habitica.models.tasks.RemindersItem -import com.habitrpg.android.habitica.models.tasks.Task import com.habitrpg.android.habitica.models.tasks.TaskType class ReminderContainer @JvmOverloads constructor( @@ -58,8 +57,8 @@ class ReminderContainer @JvmOverloads constructor( var firstDayOfWeek: Int? = null set(value) { children - .filterIsInstance() - .forEach { it.firstDayOfWeek = value } + .filterIsInstance() + .forEach { it.firstDayOfWeek = value } field = value } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/ReminderItemFormView.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/ReminderItemFormView.kt index eebc69476..df4e73afa 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/ReminderItemFormView.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/ReminderItemFormView.kt @@ -20,10 +20,11 @@ import com.habitrpg.android.habitica.extensions.dpToPx import com.habitrpg.android.habitica.extensions.getThemeColor import com.habitrpg.android.habitica.extensions.layoutInflater import com.habitrpg.android.habitica.models.tasks.RemindersItem -import com.habitrpg.android.habitica.models.tasks.Task import com.habitrpg.android.habitica.models.tasks.TaskType import java.text.DateFormat -import java.util.* +import java.util.Calendar +import java.util.Date +import java.util.Locale class ReminderItemFormView @JvmOverloads constructor( context: Context, diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/TaskSchedulingControls.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/TaskSchedulingControls.kt index a2787a148..191bc9e90 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/TaskSchedulingControls.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/TaskSchedulingControls.kt @@ -9,7 +9,11 @@ import android.text.TextUtils import android.util.AttributeSet import android.view.View import android.view.accessibility.AccessibilityEvent -import android.widget.* +import android.widget.AdapterView +import android.widget.DatePicker +import android.widget.LinearLayout +import android.widget.Space +import android.widget.TextView import androidx.core.content.ContextCompat import androidx.core.view.children import com.habitrpg.android.habitica.R @@ -18,12 +22,14 @@ import com.habitrpg.android.habitica.extensions.dpToPx import com.habitrpg.android.habitica.extensions.layoutInflater import com.habitrpg.android.habitica.models.tasks.Days import com.habitrpg.android.habitica.models.tasks.Frequency -import com.habitrpg.android.habitica.models.tasks.Task import com.habitrpg.android.habitica.models.tasks.TaskType import com.habitrpg.android.habitica.ui.adapter.SimpleSpinnerAdapter import java.text.DateFormat import java.text.DateFormatSymbols -import java.util.* +import java.util.Calendar +import java.util.Collections +import java.util.Date +import java.util.Locale class TaskSchedulingControls @JvmOverloads constructor( context: Context, diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/yesterdailies/YesterdailyDialog.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/yesterdailies/YesterdailyDialog.kt index 2f075e230..a32e40566 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/yesterdailies/YesterdailyDialog.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/yesterdailies/YesterdailyDialog.kt @@ -23,7 +23,8 @@ import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.core.Observable import java.lang.ref.WeakReference -import java.util.* +import java.util.Calendar +import java.util.Date import java.util.concurrent.TimeUnit import kotlin.math.abs diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/utils/ContentDeserializer.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/utils/ContentDeserializer.kt index b413e31dd..073a0a0dd 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/utils/ContentDeserializer.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/utils/ContentDeserializer.kt @@ -11,7 +11,15 @@ import com.habitrpg.android.habitica.models.ContentGear import com.habitrpg.android.habitica.models.ContentResult import com.habitrpg.android.habitica.models.FAQArticle import com.habitrpg.android.habitica.models.Skill -import com.habitrpg.android.habitica.models.inventory.* +import com.habitrpg.android.habitica.models.inventory.Customization +import com.habitrpg.android.habitica.models.inventory.Egg +import com.habitrpg.android.habitica.models.inventory.Equipment +import com.habitrpg.android.habitica.models.inventory.Food +import com.habitrpg.android.habitica.models.inventory.HatchingPotion +import com.habitrpg.android.habitica.models.inventory.Mount +import com.habitrpg.android.habitica.models.inventory.Pet +import com.habitrpg.android.habitica.models.inventory.QuestContent +import com.habitrpg.android.habitica.models.inventory.SpecialItem import io.realm.RealmList import java.lang.reflect.Type diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/utils/OwnedItemListDeserializer.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/utils/OwnedItemListDeserializer.kt index 0e8de546d..b3eb3a604 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/utils/OwnedItemListDeserializer.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/utils/OwnedItemListDeserializer.kt @@ -13,7 +13,7 @@ class OwnedItemListDeserializer : JsonDeserializer> { val entrySet = json?.asJsonObject?.entrySet() if (entrySet != null) { for (entry in entrySet) { - if (entry.value.isJsonPrimitive){ + if (entry.value.isJsonPrimitive) { val item = OwnedItem() item.key = entry.key item.numberOwned = entry.value.asInt diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/utils/QuestDropItemsListSerialization.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/utils/QuestDropItemsListSerialization.kt index 97bdbb3cf..199092ed6 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/utils/QuestDropItemsListSerialization.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/utils/QuestDropItemsListSerialization.kt @@ -7,7 +7,6 @@ import com.google.gson.JsonParseException import com.habitrpg.android.habitica.models.inventory.QuestDropItem import io.realm.RealmList import java.lang.reflect.Type -import java.util.ArrayList class QuestDropItemsListSerialization : JsonDeserializer> { @Throws(JsonParseException::class) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/utils/SkillDeserializer.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/utils/SkillDeserializer.kt index e2be71268..3a669730d 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/utils/SkillDeserializer.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/utils/SkillDeserializer.kt @@ -6,7 +6,6 @@ import com.google.gson.JsonElement import com.google.gson.JsonParseException import com.habitrpg.android.habitica.models.Skill import java.lang.reflect.Type -import java.util.ArrayList /** * Created by viirus on 25/11/15. diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/utils/SocialAuthenticationDeserializer.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/utils/SocialAuthenticationDeserializer.kt index f98b1b0c8..5a935a0b3 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/utils/SocialAuthenticationDeserializer.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/utils/SocialAuthenticationDeserializer.kt @@ -5,7 +5,6 @@ import com.google.gson.JsonDeserializer import com.google.gson.JsonElement import com.google.gson.JsonParseException import com.habitrpg.android.habitica.extensions.getAsString -import com.habitrpg.android.habitica.models.TutorialStep import com.habitrpg.android.habitica.models.user.auth.SocialAuthentication import java.lang.reflect.Type diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/utils/TaskListDeserializer.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/utils/TaskListDeserializer.kt index f89ba3eec..47bb3f9c4 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/utils/TaskListDeserializer.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/utils/TaskListDeserializer.kt @@ -12,8 +12,6 @@ import com.habitrpg.android.habitica.models.tasks.TaskList import io.realm.Realm import io.realm.RealmList import java.lang.reflect.Type -import java.util.ArrayList -import java.util.HashMap class TaskListDeserializer : JsonDeserializer { override fun deserialize(json: JsonElement, typeOfT: Type, ctx: JsonDeserializationContext): TaskList { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/utils/TaskSerializer.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/utils/TaskSerializer.kt index 71bbc50e2..d4a89bab9 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/utils/TaskSerializer.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/utils/TaskSerializer.kt @@ -18,7 +18,6 @@ import com.habitrpg.android.habitica.models.tasks.TaskGroupPlan import com.habitrpg.android.habitica.models.tasks.TaskType import io.realm.RealmList import java.lang.reflect.Type -import java.util.ArrayList import java.util.Date class TaskSerializer : JsonSerializer, JsonDeserializer { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/utils/TaskTagDeserializer.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/utils/TaskTagDeserializer.kt index b08220c3a..e3ddefceb 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/utils/TaskTagDeserializer.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/utils/TaskTagDeserializer.kt @@ -8,7 +8,6 @@ import com.habitrpg.android.habitica.models.Tag import io.realm.Realm import io.realm.RealmList import java.lang.reflect.Type -import java.util.ArrayList class TaskTagDeserializer : JsonDeserializer> { @Throws(JsonParseException::class) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/utils/UserDeserializer.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/utils/UserDeserializer.kt index a7eee286a..e7d6ea2bd 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/utils/UserDeserializer.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/utils/UserDeserializer.kt @@ -32,7 +32,6 @@ import com.habitrpg.android.habitica.models.user.UserAchievement import io.realm.Realm import io.realm.RealmList import java.lang.reflect.Type -import java.util.ArrayList import java.util.Date class UserDeserializer : JsonDeserializer { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/AvatarStatsWidgetProvider.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/AvatarStatsWidgetProvider.kt index f530d897f..fce62a693 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/AvatarStatsWidgetProvider.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/AvatarStatsWidgetProvider.kt @@ -79,8 +79,6 @@ class AvatarStatsWidgetProvider : BaseWidgetProvider() { remoteViews.setViewVisibility(R.id.detail_info_view, View.GONE) } - - return remoteViews } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/BaseWidgetProvider.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/BaseWidgetProvider.kt index 9f45144a3..b354aa997 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/BaseWidgetProvider.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/BaseWidgetProvider.kt @@ -10,7 +10,6 @@ import com.habitrpg.android.habitica.data.UserRepository import com.habitrpg.android.habitica.helpers.AmplitudeManager import com.habitrpg.android.habitica.interactors.NotifyUserUseCase import com.habitrpg.android.habitica.models.responses.TaskScoringResult -import java.util.* import javax.inject.Inject abstract class BaseWidgetProvider : AppWidgetProvider() { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/DailiesListFactory.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/DailiesListFactory.kt index 7c5864907..78ed87ce3 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/DailiesListFactory.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/DailiesListFactory.kt @@ -3,7 +3,6 @@ package com.habitrpg.android.habitica.widget import android.content.Context import android.content.Intent import com.habitrpg.android.habitica.R -import com.habitrpg.android.habitica.models.tasks.Task import com.habitrpg.android.habitica.models.tasks.TaskType class DailiesListFactory(context: Context, intent: Intent) : TaskListFactory(context, intent, TaskType.DAILY, R.layout.widget_dailies_list_row, R.id.dailies_text) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/HabitButtonWidgetService.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/HabitButtonWidgetService.kt index 9e2a0c23a..83136caa6 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/HabitButtonWidgetService.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/HabitButtonWidgetService.kt @@ -20,7 +20,6 @@ import com.habitrpg.android.habitica.helpers.RxErrorHandler import com.habitrpg.android.habitica.models.responses.TaskDirection import com.habitrpg.android.habitica.models.tasks.Task import com.habitrpg.android.habitica.ui.helpers.MarkdownParser -import java.util.* import javax.inject.Inject import kotlin.math.min diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/TaskListFactory.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/TaskListFactory.kt index c66448d0b..365d3a25f 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/TaskListFactory.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/TaskListFactory.kt @@ -17,7 +17,6 @@ import com.habitrpg.android.habitica.models.tasks.TaskType import com.habitrpg.android.habitica.ui.helpers.MarkdownParser import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.core.Observable -import java.util.* import javax.inject.Inject abstract class TaskListFactory internal constructor(val context: Context, intent: Intent, private val taskType: TaskType, private val listItemResId: Int, private val listItemTextResId: Int) : RemoteViewsService.RemoteViewsFactory { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/TodoListFactory.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/TodoListFactory.kt index b499ffc8e..d2f3a68cd 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/TodoListFactory.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/TodoListFactory.kt @@ -3,7 +3,6 @@ package com.habitrpg.android.habitica.widget import android.content.Context import android.content.Intent import com.habitrpg.android.habitica.R -import com.habitrpg.android.habitica.models.tasks.Task import com.habitrpg.android.habitica.models.tasks.TaskType class TodoListFactory(context: Context, intent: Intent) : TaskListFactory(context, intent, TaskType.TODO, R.layout.widget_todo_list_row, R.id.todo_text) diff --git a/Habitica/src/test/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImplTest.kt b/Habitica/src/test/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImplTest.kt index 5af6d2509..6854a3d2f 100644 --- a/Habitica/src/test/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImplTest.kt +++ b/Habitica/src/test/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImplTest.kt @@ -8,6 +8,7 @@ import com.habitrpg.android.habitica.models.responses.TaskDirectionData import com.habitrpg.android.habitica.models.responses.TaskScoringResult import com.habitrpg.android.habitica.models.tasks.Task import com.habitrpg.android.habitica.models.tasks.TaskList +import com.habitrpg.android.habitica.models.tasks.TaskType import com.habitrpg.android.habitica.models.tasks.TasksOrder import com.habitrpg.android.habitica.models.user.Stats import com.habitrpg.android.habitica.models.user.User diff --git a/Habitica/src/test/java/com/habitrpg/android/habitica/helpers/NumberAbbreviatorTest.kt b/Habitica/src/test/java/com/habitrpg/android/habitica/helpers/NumberAbbreviatorTest.kt index 193f66a49..463371496 100644 --- a/Habitica/src/test/java/com/habitrpg/android/habitica/helpers/NumberAbbreviatorTest.kt +++ b/Habitica/src/test/java/com/habitrpg/android/habitica/helpers/NumberAbbreviatorTest.kt @@ -8,10 +8,12 @@ import io.kotest.matchers.shouldBe import io.mockk.clearMocks import io.mockk.every import io.mockk.mockk +import java.util.* class NumberAbbreviatorTest : StringSpec({ val mockContext = mockk() beforeEach { + Locale.setDefault(Locale.US) every { mockContext.getString(R.string.thousand_abbrev) } returns "k" every { mockContext.getString(R.string.million_abbrev) } returns "m" every { mockContext.getString(R.string.billion_abbrev) } returns "b" diff --git a/build.gradle b/build.gradle index f9074ab67..01bda4695 100644 --- a/build.gradle +++ b/build.gradle @@ -15,7 +15,7 @@ buildscript { classpath "io.realm:realm-gradle-plugin:10.8.1" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.19.0" - classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.5.0-alpha01" + classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.5.0-alpha03" classpath 'com.google.firebase:perf-plugin:1.4.1' } } @@ -25,7 +25,7 @@ apply plugin: 'io.gitlab.arturbosch.detekt' allprojects { repositories { google() - jcenter() + mavenCentral() } }