diff --git a/.gitignore b/.gitignore
index 1d91a10..c3b99dc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -47,7 +47,6 @@ proguard/
captures/
# IntelliJ
-*.iml
.idea/workspace.xml
.idea/tasks.xml
.idea/gradle.xml
@@ -66,7 +65,6 @@ captures/
#*.keystore
# External native build folder generated in Android Studio 2.2 and later
-.externalNativeBuild
.cxx/
# Google Services (e.g. APIs or Firebase)
@@ -92,8 +90,5 @@ lint/intermediates/
lint/generated/
lint/outputs/
lint/tmp/
-# lint/reports/
-app/google-services.json
-.idea/codeStyles/Project.xml
.idea/codeStyles/Project.xml
app/release/output.json
diff --git a/app/build.gradle b/app/build.gradle
index 6f0a2d0..7618e96 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,5 +1,6 @@
+import org.jetbrains.kotlin.gradle.dsl.JvmTarget
+
apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
apply plugin: 'kotlin-parcelize'
apply plugin: 'org.jetbrains.kotlin.plugin.serialization'
apply plugin: 'com.google.devtools.ksp'
@@ -8,40 +9,43 @@ apply plugin: 'com.google.firebase.crashlytics'
apply plugin: 'com.google.gms.google-services'
android {
- compileSdk 37
+ compileSdk = 37
defaultConfig {
- applicationId "com.cornellappdev.coursegrab"
- minSdkVersion 24
- targetSdkVersion 34
- versionCode 10
- versionName "1.2.0"
- testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ applicationId = "com.cornellappdev.coursegrab"
+ minSdk = 24
+ targetSdk = 34
+ versionCode = 10
+ versionName = "1.2.0"
+ testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
buildConfigField("String", "BACKEND_URI", "\"coursegrab-backend.cornellappdev.com\"")
}
buildTypes {
debug {
manifestPlaceholders = [crashlyticsCollectionEnabled: "false"]
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ minifyEnabled = false
+ proguardFiles(getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro')
}
release {
manifestPlaceholders = [crashlyticsCollectionEnabled: "true"]
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ minifyEnabled = false
+ proguardFiles(getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro')
}
}
compileOptions {
- sourceCompatibility = JavaVersion.VERSION_11
- targetCompatibility = JavaVersion.VERSION_11
- }
- kotlinOptions {
- jvmTarget = '11'
+ sourceCompatibility = JavaVersion.VERSION_17
+ targetCompatibility = JavaVersion.VERSION_17
}
buildFeatures {
- viewBinding true
- buildConfig true
+ viewBinding = true
+ buildConfig = true
+ }
+ namespace = 'com.cornellappdev.coursegrab'
+}
+
+kotlin {
+ compilerOptions {
+ jvmTarget = JvmTarget.JVM_17
}
- namespace 'com.cornellappdev.coursegrab'
}
dependencies {
@@ -57,18 +61,18 @@ dependencies {
implementation 'androidx.credentials:credentials-play-services-auth:1.6.0'
implementation 'com.google.android.libraries.identity.googleid:googleid:1.2.0'
implementation 'com.squareup.okhttp3:okhttp:5.5.0'
- implementation "com.squareup.retrofit2:retrofit:$retrofit_version"
- implementation "com.squareup.retrofit2:converter-kotlinx-serialization:$retrofit_version"
+ implementation "com.squareup.retrofit2:retrofit:${rootProject.ext.retrofit_version}"
+ implementation "com.squareup.retrofit2:converter-kotlinx-serialization:${rootProject.ext.retrofit_version}"
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.11.0'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.11.0'
- implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:$serialization_json_version"
+ implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:${rootProject.ext.serialization_json_version}"
implementation 'androidx.appcompat:appcompat:1.8.0'
implementation 'androidx.core:core-ktx:1.19.0'
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.11.0'
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.11.0'
- implementation 'androidx.activity:activity-ktx:1.8.0'
- implementation "com.google.dagger:hilt-android:$hilt_version"
- ksp "com.google.dagger:hilt-compiler:$hilt_version"
+ implementation 'androidx.activity:activity-ktx:1.13.0'
+ implementation "com.google.dagger:hilt-android:${rootProject.ext.hilt_version}"
+ ksp "com.google.dagger:hilt-compiler:${rootProject.ext.hilt_version}"
implementation 'androidx.constraintlayout:constraintlayout:2.2.2'
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.2.0'
testImplementation 'junit:junit:4.13.2'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ee41f36..d303cd0 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -38,7 +38,7 @@
+ android:theme="@style/Theme.AppCompat.Light.NoActionBar" />
diff --git a/app/src/main/java/com/cornellappdev/coursegrab/ui/details/CourseDetailsActivity.kt b/app/src/main/java/com/cornellappdev/coursegrab/ui/details/CourseDetailsActivity.kt
index 00683b8..c78ef9e 100644
--- a/app/src/main/java/com/cornellappdev/coursegrab/ui/details/CourseDetailsActivity.kt
+++ b/app/src/main/java/com/cornellappdev/coursegrab/ui/details/CourseDetailsActivity.kt
@@ -36,7 +36,11 @@ class CourseDetailsActivity : AppCompatActivity() {
val courseDetails: SearchResult = intent.getParcelableExtra("courseDetails") as SearchResult
- binding.headerTextView.text = "${courseDetails.subjectCode} ${courseDetails.courseNum}"
+ binding.headerTextView.text = getString(
+ R.string.course_header_format,
+ courseDetails.subjectCode,
+ courseDetails.courseNum
+ )
binding.courseTitle.text = courseDetails.title
binding.courseDetails.text =
@@ -91,7 +95,11 @@ class CourseDetailsActivity : AppCompatActivity() {
holder.sectionStatus.setImageResource(if (availableCourses[position].isOpen) R.drawable.ic_status_open else R.drawable.ic_status_closed)
//change tracking text
- holder.trackText.text = availableCourses[position].numTracking.toString() + " Tracking"
+ holder.trackText.text = context.resources.getQuantityString(
+ R.plurals.tracking_count,
+ availableCourses[position].numTracking,
+ availableCourses[position].numTracking
+ )
//Change the track button to remove button
holder.removeButton.visibility =
diff --git a/app/src/main/java/com/cornellappdev/coursegrab/ui/main/MainActivity.kt b/app/src/main/java/com/cornellappdev/coursegrab/ui/main/MainActivity.kt
index 3cf3d2e..a4f09e5 100644
--- a/app/src/main/java/com/cornellappdev/coursegrab/ui/main/MainActivity.kt
+++ b/app/src/main/java/com/cornellappdev/coursegrab/ui/main/MainActivity.kt
@@ -140,13 +140,13 @@ class MainActivity : AppCompatActivity() {
layoutManager = LinearLayoutManager(this@MainActivity)
adapter = AvailableAdapter(state.available, this@MainActivity)
}
- binding.availableTitle.text = "${state.available.size} Available"
+ binding.availableTitle.text = getString(R.string.available_count, state.available.size)
binding.awaitingList.apply {
layoutManager = LinearLayoutManager(this@MainActivity)
adapter = AwaitingAdapter(state.awaiting, this@MainActivity)
}
- binding.awaitingTitle.text = "${state.awaiting.size} Awaiting"
+ binding.awaitingTitle.text = getString(R.string.awaiting_count, state.awaiting.size)
binding.layoutAvailable.visibility =
if (state.available.isNotEmpty()) View.VISIBLE else View.GONE
@@ -209,8 +209,12 @@ class MainActivity : AppCompatActivity() {
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
- holder.courseTitle.text =
- "${availableCourses[position].subjectCode} ${availableCourses[position].courseNum}: ${availableCourses[position].title}"
+ holder.courseTitle.text = context.getString(
+ R.string.course_title_format,
+ availableCourses[position].subjectCode,
+ availableCourses[position].courseNum,
+ availableCourses[position].title
+ )
holder.courseTime.text = availableCourses[position].section.uppercase(getDefault())
holder.coursePin.text = availableCourses[position].catalogNum.toString()
holder.courseStatus.setImageResource(if (availableCourses[position].isOpen) R.drawable.ic_status_open else R.drawable.ic_status_closed)
@@ -260,8 +264,12 @@ class MainActivity : AppCompatActivity() {
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
- holder.courseTitle.text =
- "${awaitingCourses[position].subjectCode} ${awaitingCourses[position].courseNum}: ${awaitingCourses[position].title}"
+ holder.courseTitle.text = context.getString(
+ R.string.course_title_format,
+ awaitingCourses[position].subjectCode,
+ awaitingCourses[position].courseNum,
+ awaitingCourses[position].title
+ )
holder.courseTime.text = awaitingCourses[position].section.uppercase(getDefault())
holder.coursePin.text = awaitingCourses[position].catalogNum.toString()
holder.courseStatus.setImageResource(if (awaitingCourses[position].isOpen) R.drawable.ic_status_open else R.drawable.ic_status_closed)
diff --git a/app/src/main/java/com/cornellappdev/coursegrab/ui/notification/NotificationModal.kt b/app/src/main/java/com/cornellappdev/coursegrab/ui/notification/NotificationModal.kt
index 72827b6..c175efb 100644
--- a/app/src/main/java/com/cornellappdev/coursegrab/ui/notification/NotificationModal.kt
+++ b/app/src/main/java/com/cornellappdev/coursegrab/ui/notification/NotificationModal.kt
@@ -1,9 +1,10 @@
package com.cornellappdev.coursegrab.ui.notification
import android.content.Intent
-import android.net.Uri
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
+import androidx.core.net.toUri
+import com.cornellappdev.coursegrab.R
import com.cornellappdev.coursegrab.databinding.ActivityNotificationModalBinding
import com.cornellappdev.coursegrab.models.Course
import com.cornellappdev.coursegrab.models.CourseNotification
@@ -22,13 +23,18 @@ class NotificationModal : AppCompatActivity() {
val course: Course =
(intent.getParcelableExtra("courseDetails") as CourseNotification).section
- binding.courseTitle.text = "${course.subjectCode} ${course.courseNum}: ${course.title}"
+ binding.courseTitle.text = getString(
+ R.string.course_title_format,
+ course.subjectCode,
+ course.courseNum,
+ course.title
+ )
binding.courseSection.text = course.section
binding.coursePin.text = course.catalogNum.toString()
binding.buttonStudentCenter.setOnClickListener {
val browserIntent =
- Intent(Intent.ACTION_VIEW, Uri.parse("http://studentcenter.cornell.edu"))
+ Intent(Intent.ACTION_VIEW, "http://studentcenter.cornell.edu".toUri())
startActivity(browserIntent)
}
diff --git a/app/src/main/java/com/cornellappdev/coursegrab/ui/search/SearchActivity.kt b/app/src/main/java/com/cornellappdev/coursegrab/ui/search/SearchActivity.kt
index 95c5b07..724a5e8 100644
--- a/app/src/main/java/com/cornellappdev/coursegrab/ui/search/SearchActivity.kt
+++ b/app/src/main/java/com/cornellappdev/coursegrab/ui/search/SearchActivity.kt
@@ -139,8 +139,12 @@ class SearchActivity : AppCompatActivity() {
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
- holder.courseTitle.text =
- "${resultsCourses[position].subjectCode} ${resultsCourses[position].courseNum}: ${resultsCourses[position].title}"
+ holder.courseTitle.text = context.getString(
+ R.string.course_title_format,
+ resultsCourses[position].subjectCode,
+ resultsCourses[position].courseNum,
+ resultsCourses[position].title
+ )
holder.expandButton.setOnClickListener {
val intent = Intent(context, CourseDetailsActivity::class.java).apply {
diff --git a/app/src/main/java/com/cornellappdev/coursegrab/ui/splash/SplashScreenActivity.kt b/app/src/main/java/com/cornellappdev/coursegrab/ui/splash/SplashScreenActivity.kt
index 764209c..7d283a3 100644
--- a/app/src/main/java/com/cornellappdev/coursegrab/ui/splash/SplashScreenActivity.kt
+++ b/app/src/main/java/com/cornellappdev/coursegrab/ui/splash/SplashScreenActivity.kt
@@ -11,6 +11,7 @@ import android.view.View
import android.view.WindowInsets
import android.widget.VideoView
import androidx.appcompat.app.AppCompatActivity
+import androidx.core.net.toUri
import com.cornellappdev.coursegrab.R
import com.cornellappdev.coursegrab.databinding.ActivitySplashScreenBinding
import com.cornellappdev.coursegrab.ui.login.LoginActivity
@@ -74,10 +75,8 @@ class SplashScreenActivity : AppCompatActivity() {
fullscreenContent = binding.fullscreenContent
fullscreenContent.setOnClickListener { toggle() }
try {
- val video: Uri = Uri.parse(
- "android.resource://" + packageName + "/"
- + R.raw.splash
- )
+ val video: Uri = ("android.resource://" + packageName + "/"
+ + R.raw.splash).toUri()
fullscreenContent.visibility = View.VISIBLE
fullscreenContent.setVideoURI(video)
fullscreenContent.setOnCompletionListener { jump() }
diff --git a/app/src/main/res/drawable-v24/icon.png b/app/src/main/res/drawable/icon.png
similarity index 100%
rename from app/src/main/res/drawable-v24/icon.png
rename to app/src/main/res/drawable/icon.png
diff --git a/app/src/main/res/layout/activity_course_details.xml b/app/src/main/res/layout/activity_course_details.xml
index e89efaf..2529206 100644
--- a/app/src/main/res/layout/activity_course_details.xml
+++ b/app/src/main/res/layout/activity_course_details.xml
@@ -68,7 +68,7 @@
android:maxLines="2"
android:paddingStart="14dp"
android:scrollHorizontally="true"
- android:text="CS 1998: Intro to Android"
+ tools:text="CS 1998: Intro to Android"
android:textColor="@android:color/black"
android:textSize="18sp" />
@@ -82,7 +82,7 @@
android:fontFamily="sans-serif-medium"
android:gravity="bottom"
android:paddingLeft="14dp"
- android:text="LEC 006 / M 7:30PM"
+ tools:text="LEC 006 / M 7:30PM"
android:textSize="16sp" />
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index a878cb8..53f5083 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -84,7 +84,7 @@
android:paddingStart="16dp"
android:paddingTop="16dp"
android:paddingBottom="4dp"
- android:text="0 Available"
+ tools:text="0 Available"
android:textColor="@color/greenTextColor"
android:textSize="20sp" />
@@ -115,7 +115,7 @@
android:paddingStart="16dp"
android:paddingTop="16dp"
android:paddingBottom="4dp"
- android:text="0 Awaiting"
+ tools:text="0 Awaiting"
android:textColor="@android:color/black"
android:textSize="20sp" />
diff --git a/app/src/main/res/layout/activity_notification_modal.xml b/app/src/main/res/layout/activity_notification_modal.xml
index aab25d9..ef38273 100644
--- a/app/src/main/res/layout/activity_notification_modal.xml
+++ b/app/src/main/res/layout/activity_notification_modal.xml
@@ -29,7 +29,7 @@
android:layout_marginStart="20dp"
android:layout_marginTop="45dp"
android:layout_marginEnd="20dp"
- android:text="CS 1998: Intro to Android Development"
+ tools:text="CS 1998: Intro to Android Development"
android:textAlignment="center"
android:textAllCaps="false"
android:textColor="@color/white"
@@ -45,7 +45,7 @@
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:layout_marginEnd="20dp"
- android:text="10032"
+ tools:text="10032"
android:textAlignment="center"
android:textAllCaps="false"
android:textColor="@color/white"
@@ -64,7 +64,7 @@
android:layout_marginTop="20dp"
android:layout_marginEnd="20dp"
android:fontFamily="sans-serif-medium"
- android:text="lec 001 / TR 1:25pm"
+ tools:text="lec 001 / TR 1:25pm"
android:textAlignment="center"
android:textAllCaps="true"
android:textColor="@color/white"
diff --git a/app/src/main/res/layout/activity_search.xml b/app/src/main/res/layout/activity_search.xml
index bef0cf9..091def6 100644
--- a/app/src/main/res/layout/activity_search.xml
+++ b/app/src/main/res/layout/activity_search.xml
@@ -72,7 +72,7 @@
android:paddingStart="14dp"
android:paddingTop="16dp"
android:paddingBottom="10dp"
- android:text="0 Results"
+ tools:text="0 Results"
android:textColor="@color/black"
android:textSize="24sp" />
diff --git a/app/src/main/res/layout/course_available_list_item.xml b/app/src/main/res/layout/course_available_list_item.xml
index ffcc08e..ba48926 100644
--- a/app/src/main/res/layout/course_available_list_item.xml
+++ b/app/src/main/res/layout/course_available_list_item.xml
@@ -1,5 +1,6 @@
@@ -57,7 +58,7 @@
android:fontFamily="sans-serif-medium"
android:gravity="bottom"
android:paddingStart="14dp"
- android:text="LEC 006 / M 7:30PM"
+ tools:text="LEC 006 / M 7:30PM"
android:textSize="16sp" />
diff --git a/app/src/main/res/layout/course_available_list_item_v2.xml b/app/src/main/res/layout/course_available_list_item_v2.xml
index 2822791..4de3fa1 100644
--- a/app/src/main/res/layout/course_available_list_item_v2.xml
+++ b/app/src/main/res/layout/course_available_list_item_v2.xml
@@ -32,7 +32,7 @@
android:gravity="bottom"
android:maxLines="2"
android:scrollHorizontally="true"
- android:text="CS 1998: Intro to Android"
+ tools:text="CS 1998: Intro to Android"
android:textColor="@android:color/black"
android:textSize="18sp"
app:layout_constraintEnd_toStartOf="@+id/course_status"
@@ -58,7 +58,7 @@
android:layout_marginTop="12dp"
android:fontFamily="sans-serif-medium"
android:gravity="bottom"
- android:text="LEC 006 / M 7:30PM"
+ tools:text="LEC 006 / M 7:30PM"
android:textSize="16sp"
app:layout_constraintEnd_toStartOf="@+id/course_pin"
app:layout_constraintStart_toStartOf="parent"
@@ -70,7 +70,7 @@
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:fontFamily="sans-serif-medium"
- android:text="10032"
+ tools:text="10032"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="@+id/course_time"
app:layout_constraintEnd_toEndOf="parent"
diff --git a/app/src/main/res/layout/course_awaiting_list_item.xml b/app/src/main/res/layout/course_awaiting_list_item.xml
index b9ebf17..806107c 100644
--- a/app/src/main/res/layout/course_awaiting_list_item.xml
+++ b/app/src/main/res/layout/course_awaiting_list_item.xml
@@ -19,7 +19,7 @@
android:gravity="bottom"
android:maxLines="2"
android:scrollHorizontally="true"
- android:text="CS 1998: Intro to Android"
+ tools:text="CS 1998: Intro to Android"
android:textColor="@android:color/black"
android:textSize="18sp"
app:layout_constraintEnd_toStartOf="@+id/course_status"
@@ -45,7 +45,7 @@
android:layout_marginTop="12dp"
android:fontFamily="sans-serif-medium"
android:gravity="bottom"
- android:text="LEC 006 / M 7:30PM"
+ tools:text="LEC 006 / M 7:30PM"
android:textSize="16sp"
app:layout_constraintEnd_toStartOf="@+id/course_pin"
app:layout_constraintStart_toStartOf="parent"
@@ -57,7 +57,7 @@
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:fontFamily="sans-serif-medium"
- android:text="10032"
+ tools:text="10032"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="@+id/course_time"
app:layout_constraintEnd_toEndOf="parent"
diff --git a/app/src/main/res/layout/course_awaiting_list_item_v2.xml b/app/src/main/res/layout/course_awaiting_list_item_v2.xml
index c2c58d5..bc0e33a 100644
--- a/app/src/main/res/layout/course_awaiting_list_item_v2.xml
+++ b/app/src/main/res/layout/course_awaiting_list_item_v2.xml
@@ -35,7 +35,7 @@
android:gravity="bottom"
android:maxLines="2"
android:scrollHorizontally="true"
- android:text="CS 1998: Intro to Android"
+ tools:text="CS 1998: Intro to Android"
android:textColor="@android:color/black"
android:textSize="18sp"
android:translationZ="2dp"
@@ -64,7 +64,7 @@
android:layout_marginTop="12dp"
android:fontFamily="sans-serif-medium"
android:gravity="bottom"
- android:text="LEC 006 / M 7:30PM"
+ tools:text="LEC 006 / M 7:30PM"
android:textSize="16sp"
android:translationZ="2dp"
app:layout_constraintEnd_toStartOf="@+id/course_pin"
@@ -77,7 +77,7 @@
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:fontFamily="sans-serif-medium"
- android:text="10032"
+ tools:text="10032"
android:textSize="16sp"
android:translationZ="2dp"
app:layout_constraintBottom_toBottomOf="@+id/course_time"
diff --git a/app/src/main/res/layout/course_search_list_item.xml b/app/src/main/res/layout/course_search_list_item.xml
index 9a9641e..fd472d8 100644
--- a/app/src/main/res/layout/course_search_list_item.xml
+++ b/app/src/main/res/layout/course_search_list_item.xml
@@ -1,5 +1,6 @@
diff --git a/app/src/main/res/layout/course_section_item.xml b/app/src/main/res/layout/course_section_item.xml
index 7d63127..1df930b 100644
--- a/app/src/main/res/layout/course_section_item.xml
+++ b/app/src/main/res/layout/course_section_item.xml
@@ -44,7 +44,7 @@
android:gravity="bottom"
android:maxLines="2"
android:scrollHorizontally="true"
- android:text="LEC 001 / W 7:30PM"
+ tools:text="LEC 001 / W 7:30PM"
android:textColor="@android:color/black"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="parent"
@@ -88,7 +88,7 @@
android:layout_marginStart="4dp"
android:layout_marginTop="4dp"
android:layout_marginBottom="4dp"
- android:text="0 Tracking"
+ tools:text="0 Tracking"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/trackingLogo"
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 1b971f1..c93c206 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -18,7 +18,7 @@
coursegrab_alert
Add
- Enter a Course ID...
+ Enter a Course ID…
Find Courses
@@ -43,6 +43,15 @@
Try a different query
+
+ %1$s %2$d: %3$s
+ %1$s %2$d
+ %d Available
+ %d Awaiting
+
+ - %d Tracking
+ - %d Tracking
+
- %d Result
- %d Results
diff --git a/build.gradle b/build.gradle
index 8e1ab03..3c61c67 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,10 +1,9 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
- // Pegged to 2.2.x: Hilt's annotation processor cannot read Kotlin 2.4 metadata.
- ext.kotlin_version = '2.2.0'
- ext.ksp_version = '2.2.0-2.0.2'
- ext.hilt_version = '2.56.2'
+ ext.kotlin_version = '2.4.10'
+ ext.ksp_version = '2.3.9'
+ ext.hilt_version = '2.60.1'
ext.serialization_json_version = '1.9.0'
ext.retrofit_version = '3.0.0'
repositories {
@@ -33,5 +32,5 @@ allprojects {
}
tasks.register('clean', Delete) {
- delete rootProject.buildDir
+ delete rootProject.layout.buildDirectory
}
diff --git a/gradle.properties b/gradle.properties
index f26acd6..a08ba65 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -15,20 +15,10 @@ org.gradle.jvmargs=-Xmx1536m
# Android operating system, and which are packaged with your app's APK
# https://developer.android.com/topic/libraries/support-library/androidx-rn
android.useAndroidX=true
-# Automatically convert third-party libraries to use AndroidX
-android.enableJetifier=true
# Kotlin code style for this project: "official" or "obsolete":
kotlin.code.style=official
android.nonTransitiveRClass=false
-android.nonFinalResIds=false
-android.defaults.buildfeatures.resvalues=true
-android.sdk.defaultTargetSdkToCompileSdkIfUnset=false
-android.enableAppCompileTimeRClass=false
-android.usesSdkInManifest.disallowed=false
android.uniquePackageNames=false
android.dependency.useConstraints=true
android.r8.strictFullModeForKeepRules=false
-android.r8.optimizedResourceShrinking=false
-android.builtInKotlin=false
-android.newDsl=false
android.buildFeatures.buildConfig = true