Skip to content

Commit dbe5fe9

Browse files
committed
Merge branch 'dev'
2 parents 8b701d4 + a3ac41e commit dbe5fe9

22 files changed

Lines changed: 277 additions & 119 deletions

‎.github/workflows/main.yml‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ jobs:
66
runs-on: ubuntu-latest
77
steps:
88
- name: Checkout the code
9-
uses: actions/checkout@v4
9+
uses: actions/checkout@v7
1010

1111
- name: Setup JDK 17
12-
uses: actions/setup-java@v4
12+
uses: actions/setup-java@v5
1313
with:
1414
distribution: 'corretto'
1515
java-version: 17
@@ -19,7 +19,7 @@ jobs:
1919
run: ./gradlew assembleDebug
2020

2121
- name: Upload APK
22-
uses: actions/upload-artifact@v4
22+
uses: actions/upload-artifact@v7
2323
with:
2424
name: app_debug
2525
path: app/build/outputs/apk/debug/app-debug.apk

‎app/build.gradle.kts‎

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,15 @@ plugins {
66

77
android {
88
namespace = "app.opass.ccip"
9-
compileSdk = 36
9+
compileSdk = 37
10+
compileSdkMinor = 1
1011

1112
defaultConfig {
1213
applicationId = "app.opass.ccip"
1314
minSdk = 24
1415
targetSdk = 36
15-
versionCode = 62
16-
versionName = "3.9.2"
16+
versionCode = 63
17+
versionName = "3.9.3"
1718

1819
manifestPlaceholders["manifestApplicationId"] = "$applicationId"
1920
}

‎app/src/main/AndroidManifest.xml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
android:value="DISABLE" />
2020

2121
<activity android:name=".ui.LauncherActivity" android:exported="true">
22-
<intent-filter android:autoVerify="true">
22+
<intent-filter>
2323
<action android:name="android.intent.action.MAIN" />
2424
<category android:name="android.intent.category.LAUNCHER" />
2525
</intent-filter>

‎app/src/main/java/app/opass/ccip/ui/LanguagePreferenceFragment.kt‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,11 @@ class LanguagePreferenceFragment : DialogFragment() {
5757
localName = requireContext().getString(R.string.lang_local_name_ja_jp),
5858
translatedName = requireContext().getString(R.string.lang_translated_name_ja_jp)
5959
),
60+
LanguageOptionItem(
61+
languageTag = "ko-KR",
62+
localName = requireContext().getString(R.string.lang_local_name_ko_kr),
63+
translatedName = requireContext().getString(R.string.lang_translated_name_ko_kr)
64+
),
6065
LanguageOptionItem(
6166
languageTag = "nan-Hant-TW",
6267
localName = requireContext().getString(R.string.lang_local_name_nan_hant_tw),

‎app/src/main/java/app/opass/ccip/ui/MainActivity.kt‎

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import android.view.View
99
import android.widget.ImageView
1010
import android.widget.RelativeLayout
1111
import android.widget.TextView
12+
import androidx.activity.OnBackPressedCallback
1213
import androidx.appcompat.app.ActionBarDrawerToggle
1314
import androidx.appcompat.app.AppCompatActivity
1415
import androidx.appcompat.widget.Toolbar
@@ -35,6 +36,7 @@ import app.opass.ccip.ui.schedule.ScheduleTabFragment
3536
import app.opass.ccip.ui.wifi.WiFiNetworkFragment
3637
import app.opass.ccip.util.CryptoUtil
3738
import app.opass.ccip.util.PreferenceUtil
39+
import app.opass.ccip.util.ScheduleUtil
3840
import coil3.load
3941
import com.google.android.material.navigation.NavigationView
4042
import kotlinx.coroutines.CoroutineScope
@@ -88,6 +90,9 @@ class MainActivity : AppCompatActivity(), CoroutineScope {
8890
setContentView(R.layout.activity_main)
8991
mActivity = this
9092
mJob = Job()
93+
launch(Dispatchers.Default) {
94+
ScheduleUtil.rescheduleStarredSessionAlarms(applicationContext)
95+
}
9196

9297
mDrawerLayout = findViewById(R.id.drawer_layout)
9398
navigationView = findViewById(R.id.nav_view)
@@ -129,6 +134,21 @@ class MainActivity : AppCompatActivity(), CoroutineScope {
129134
}
130135
currentEventId = event.eventId
131136

137+
onBackPressedDispatcher.addCallback(this, object : OnBackPressedCallback(true) {
138+
override fun handleOnBackPressed() {
139+
when {
140+
mDrawerLayout.isDrawerOpen(GravityCompat.START) -> mDrawerLayout.closeDrawers()
141+
dispatchBackPressToChildFragment() -> Unit
142+
isDefaultFeatureSelected -> {
143+
isEnabled = false
144+
onBackPressedDispatcher.onBackPressed()
145+
isEnabled = true
146+
}
147+
else -> onDrawerItemClick(defaultFeatureItem)
148+
}
149+
}
150+
})
151+
132152
launch {
133153
try {
134154
val response = PortalClient.get().getEventConfig(event.eventId).asyncExecute()
@@ -188,16 +208,6 @@ class MainActivity : AppCompatActivity(), CoroutineScope {
188208
return fragment.onBackPressed()
189209
}
190210

191-
@Deprecated("Deprecated in Java")
192-
override fun onBackPressed() {
193-
when {
194-
mDrawerLayout.isDrawerOpen(GravityCompat.START) -> mDrawerLayout.closeDrawers()
195-
dispatchBackPressToChildFragment() -> Unit
196-
isDefaultFeatureSelected -> super.onBackPressed()
197-
else -> onDrawerItemClick(defaultFeatureItem)
198-
}
199-
}
200-
201211
override fun onNewIntent(intent: Intent?) {
202212
super.onNewIntent(intent)
203213
if (PreferenceUtil.getCurrentEvent(this).eventId != currentEventId) {

‎app/src/main/java/app/opass/ccip/ui/auth/AuthActivity.kt‎

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import android.graphics.Bitmap
77
import android.os.Bundle
88
import android.provider.MediaStore
99
import android.widget.Button
10+
import androidx.activity.OnBackPressedCallback
1011
import androidx.appcompat.app.AppCompatActivity
1112
import androidx.core.view.isGone
1213
import androidx.fragment.app.Fragment
@@ -79,23 +80,26 @@ class AuthActivity : AppCompatActivity() {
7980
})
8081
binding.viewPager.adapter = adapter
8182

83+
onBackPressedDispatcher.addCallback(this, object : OnBackPressedCallback(true) {
84+
override fun handleOnBackPressed() {
85+
val item = adapter.fragments[binding.viewPager.currentItem]
86+
if (!item.onBackPressed() && !popFragment()) {
87+
isEnabled = false
88+
onBackPressedDispatcher.onBackPressed()
89+
isEnabled = true
90+
}
91+
}
92+
})
93+
8294
nextButton.setOnClickListener {
8395
if (adapter.fragments.lastIndex >= binding.viewPager.currentItem) {
8496
adapter.fragments[binding.viewPager.currentItem].onNextButtonClicked()
8597
}
8698
}
87-
prevButton.setOnClickListener { onBackPressed() }
99+
prevButton.setOnClickListener { onBackPressedDispatcher.onBackPressed() }
88100
onPageSelected()
89101
}
90102

91-
@Deprecated("Deprecated in Java")
92-
override fun onBackPressed() {
93-
val item = adapter.fragments[binding.viewPager.currentItem]
94-
if (!item.onBackPressed() && !popFragment()) {
95-
super.onBackPressed()
96-
}
97-
}
98-
99103
@Deprecated("Deprecated in Java")
100104
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
101105
super.onActivityResult(requestCode, resultCode, data)

‎app/src/main/java/app/opass/ccip/ui/auth/TokenCheckFragment.kt‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ class TokenCheckFragment : AuthActivity.PageFragment() {
4949
}
5050

5151
override fun onNextButtonClicked() {
52-
if (hasErrorOccurred) mActivity.onBackPressed()
52+
if (hasErrorOccurred) mActivity.onBackPressedDispatcher.onBackPressed()
5353
else mActivity.onAuthFinished()
5454
}
5555

‎app/src/main/java/app/opass/ccip/ui/fastpass/FastPassFragment.kt‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -200,10 +200,10 @@ class FastPassFragment : Fragment(), CoroutineScope {
200200
.setPositiveButton(android.R.string.ok, null)
201201
.show()
202202
}
203-
else -> Toast.makeText(mActivity, "Unexpected response", Toast.LENGTH_LONG).show()
203+
else -> Toast.makeText(mActivity, R.string.unexpected_error_try_again, Toast.LENGTH_LONG).show()
204204
}
205205
} catch (t: Throwable) {
206-
Toast.makeText(mActivity, "Use req fail, " + t.message, Toast.LENGTH_LONG).show()
206+
Toast.makeText(mActivity, R.string.unexpected_error_try_again, Toast.LENGTH_LONG).show()
207207
}
208208
}
209209
}

‎app/src/main/java/app/opass/ccip/ui/schedule/ScheduleFragment.kt‎

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -143,13 +143,13 @@ class ScheduleFragment : Fragment() {
143143
} else {
144144
sessionIds.add(session.id)
145145

146-
if (PreferenceUtil.shouldPromptForNotification(requireContext())) {
147-
val notificationManager =
148-
context?.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
149-
if (!notificationManager.areNotificationsEnabled()) {
150-
NotificationDialogFragment(::requestNotificationPermission)
151-
.show(childFragmentManager, NotificationDialogFragment.TAG)
152-
}
146+
val notificationManager =
147+
context?.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
148+
if (notificationManager.areNotificationsEnabled()) {
149+
scheduleAlarm()
150+
} else if (PreferenceUtil.shouldPromptForNotification(requireContext())) {
151+
NotificationDialogFragment(::requestNotificationPermission)
152+
.show(childFragmentManager, NotificationDialogFragment.TAG)
153153
}
154154
}
155155
vm.hasStarredSessions.value = sessionIds.isNotEmpty()

‎app/src/main/java/app/opass/ccip/ui/sessiondetail/SessionDetailActivity.kt‎

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -259,13 +259,13 @@ class SessionDetailActivity : AppCompatActivity() {
259259
} else {
260260
sessionIds.add(session.id)
261261

262-
if (PreferenceUtil.shouldPromptForNotification(this)) {
263-
val notificationManager =
264-
this.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
265-
if (!notificationManager.areNotificationsEnabled()) {
266-
NotificationDialogFragment (::requestNotificationPermission)
267-
.show(supportFragmentManager, NotificationDialogFragment.TAG)
268-
}
262+
val notificationManager =
263+
this.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
264+
if (notificationManager.areNotificationsEnabled()) {
265+
scheduleAlarm()
266+
} else if (PreferenceUtil.shouldPromptForNotification(this)) {
267+
NotificationDialogFragment (::requestNotificationPermission)
268+
.show(supportFragmentManager, NotificationDialogFragment.TAG)
269269
}
270270
}
271271
PreferenceUtil.saveStarredIds(this, sessionIds)

0 commit comments

Comments
 (0)