Skip to content

Commit be07c57

Browse files
committed
Updates a lot of packages
1 parent 4e0269b commit be07c57

File tree

26 files changed

+300
-324
lines changed

26 files changed

+300
-324
lines changed

app/build.gradle

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ apply plugin: 'com.google.firebase.crashlytics'
3232
apply plugin: 'com.mikepenz.aboutlibraries.plugin'
3333

3434
android {
35-
compileSdkVersion 33
35+
compileSdk 34
3636

3737
defaultConfig {
3838
applicationId 'com.forcetower.uefs'
@@ -179,8 +179,8 @@ kotlinter {
179179
}
180180

181181
dependencies {
182-
implementation 'androidx.navigation:navigation-fragment-ktx:2.6.0'
183-
implementation 'androidx.navigation:navigation-ui-ktx:2.6.0'
182+
implementation 'androidx.navigation:navigation-fragment-ktx:2.7.5'
183+
implementation 'androidx.navigation:navigation-ui-ktx:2.7.5'
184184
coreLibraryDesugaring "com.android.tools:desugar_jdk_libs:$coreDesugar"
185185
implementation fileTree(dir: 'libs', include: ['*.jar'])
186186
implementation project(path: ':bypass')
@@ -207,7 +207,7 @@ dependencies {
207207
implementation "androidx.palette:palette-ktx:$pallete"
208208
implementation "androidx.browser:browser:$browser"
209209
implementation "androidx.preference:preference-ktx:$preference"
210-
implementation "com.google.android:flexbox:$flexbox"
210+
implementation "com.google.android.flexbox:flexbox:$flexbox"
211211
implementation "androidx.fragment:fragment-ktx:$fragment"
212212
implementation 'com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava'
213213

@@ -232,7 +232,7 @@ dependencies {
232232
kapt "androidx.hilt:hilt-compiler:$hilt_androidx"
233233

234234
// Firebase
235-
implementation platform('com.google.firebase:firebase-bom:32.1.0')
235+
implementation platform('com.google.firebase:firebase-bom:32.5.0')
236236
implementation "com.google.firebase:firebase-auth-ktx"
237237
implementation "com.google.firebase:firebase-analytics-ktx"
238238
implementation "com.google.firebase:firebase-messaging-ktx"
@@ -268,13 +268,13 @@ dependencies {
268268
implementation "com.google.code.gson:gson:$gson"
269269
implementation "org.jsoup:jsoup:$jsoup"
270270
implementation "com.github.PhilJay:MPAndroidChart:$chart_view"
271-
implementation "pub.devrel:easypermissions:$easy_permissions"
271+
// implementation "pub.devrel:easypermissions:$easy_permissions"
272272
implementation "com.ramotion.cardslider:card-slider:$card_slider"
273273
implementation "com.github.arimorty:floatingsearchview:$floating_search"
274274
implementation "io.reactivex.rxjava2:rxkotlin:$rx_kotlin"
275275
implementation 'com.getkeepsafe.taptargetview:taptargetview:1.13.3'
276276

277-
implementation 'com.google.android.gms:play-services-maps:18.1.0'
277+
implementation 'com.google.android.gms:play-services-maps:18.2.0'
278278

279279
testImplementation 'junit:junit:4.13.2'
280280
testImplementation "io.mockk:mockk:1.12.2"

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@
107107
android:parentActivityName=".feature.siecomp.schedule.EventScheduleActivity"
108108
android:theme="@style/UTheme.Speaker" />
109109
<activity
110-
android:name="com.theartofdev.edmodo.cropper.CropImageActivity"
110+
android:name="com.canhub.cropper.CropImageActivity"
111111
android:theme="@style/CropTheme.Default" />
112112
<activity
113113
android:name=".feature.disciplines.disciplinedetail.DisciplineDetailsActivity"

app/src/main/java/com/forcetower/uefs/feature/adventure/AdventureFragment.kt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ package com.forcetower.uefs.feature.adventure
2323
import android.Manifest
2424
import android.content.Context
2525
import android.content.SharedPreferences
26+
import android.content.pm.PackageManager
2627
import android.location.Location
2728
import android.os.Bundle
2829
import android.os.Looper
@@ -32,6 +33,7 @@ import android.view.View.GONE
3233
import android.view.View.VISIBLE
3334
import android.view.ViewGroup
3435
import androidx.activity.result.contract.ActivityResultContracts
36+
import androidx.core.content.ContextCompat
3537
import androidx.fragment.app.DialogFragment
3638
import androidx.fragment.app.activityViewModels
3739
import androidx.fragment.app.viewModels
@@ -54,7 +56,6 @@ import com.google.android.gms.location.LocationSettingsRequest
5456
import com.google.firebase.auth.FirebaseAuth
5557
import com.google.firebase.storage.FirebaseStorage
5658
import dagger.hilt.android.AndroidEntryPoint
57-
import pub.devrel.easypermissions.EasyPermissions
5859
import timber.log.Timber
5960
import javax.inject.Inject
6061

@@ -167,7 +168,11 @@ class AdventureFragment : UFragment() {
167168

168169
private fun startRequesting() {
169170
val perms = arrayOf(Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION)
170-
if (EasyPermissions.hasPermissions(requireContext(), *perms)) {
171+
val permissionsGranted = perms.all {
172+
ContextCompat.checkSelfPermission(requireContext(), it) == PackageManager.PERMISSION_GRANTED
173+
}
174+
175+
if (permissionsGranted) {
171176
startLocationsUpdate()
172177
} else {
173178
requestPermissions.launch(perms)

app/src/main/java/com/forcetower/uefs/feature/home/HomeBottomFragment.kt

Lines changed: 43 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -20,20 +20,23 @@
2020

2121
package com.forcetower.uefs.feature.home
2222

23-
import android.app.Activity
24-
import android.content.Intent
2523
import android.content.SharedPreferences
2624
import android.net.Uri
2725
import android.os.Bundle
2826
import android.view.LayoutInflater
2927
import android.view.View
3028
import android.view.ViewGroup
29+
import androidx.activity.result.contract.ActivityResultContracts
3130
import androidx.annotation.IdRes
3231
import androidx.core.content.ContextCompat
3332
import androidx.fragment.app.activityViewModels
3433
import androidx.navigation.fragment.findNavController
3534
import androidx.navigation.ui.NavigationUI
3635
import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions
36+
import com.canhub.cropper.CropImageContract
37+
import com.canhub.cropper.CropImageContractOptions
38+
import com.canhub.cropper.CropImageOptions
39+
import com.canhub.cropper.CropImageView
3740
import com.forcetower.core.utils.ColorUtils
3841
import com.forcetower.uefs.BuildConfig
3942
import com.forcetower.uefs.GlideApp
@@ -51,8 +54,6 @@ import com.forcetower.uefs.feature.shared.UFragment
5154
import com.forcetower.uefs.feature.shared.getPixelsFromDp
5255
import com.google.firebase.remoteconfig.FirebaseRemoteConfig
5356
import com.mikepenz.aboutlibraries.LibsBuilder
54-
import com.theartofdev.edmodo.cropper.CropImage
55-
import com.theartofdev.edmodo.cropper.CropImageView
5657
import dagger.hilt.android.AndroidEntryPoint
5758
import javax.inject.Inject
5859

@@ -61,6 +62,14 @@ class HomeBottomFragment : UFragment() {
6162
@Inject lateinit var remoteConfig: FirebaseRemoteConfig
6263
@Inject lateinit var preferences: SharedPreferences
6364

65+
private val pickImageContract = registerForActivityResult(ActivityResultContracts.GetContent()) {
66+
onContentSelected(it)
67+
}
68+
69+
private val cropImage = registerForActivityResult(CropImageContract()) {
70+
onCropResults(it)
71+
}
72+
6473
private lateinit var binding: HomeBottomBinding
6574
private val viewModel: HomeViewModel by activityViewModels()
6675

@@ -177,12 +186,6 @@ class HomeBottomFragment : UFragment() {
177186
}
178187
}
179188

180-
private fun pickImage() {
181-
val intent = Intent(Intent.ACTION_PICK)
182-
intent.type = "image/*"
183-
startActivityForResult(intent, REQUEST_SELECT_PICTURE)
184-
}
185-
186189
private fun onImagePicked(uri: Uri) {
187190
viewModel.setSelectedImage(uri)
188191
GlideApp.with(requireContext())
@@ -196,40 +199,37 @@ class HomeBottomFragment : UFragment() {
196199
viewModel.uploadImageToStorage()
197200
}
198201

199-
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
200-
super.onActivityResult(requestCode, resultCode, data)
201-
when (requestCode) {
202-
REQUEST_SELECT_PICTURE -> {
203-
if (resultCode == Activity.RESULT_OK && data != null && data.data != null) {
204-
val uri = data.data!!
205-
206-
val bg = ColorUtils.modifyAlpha(ContextCompat.getColor(requireContext(), R.color.colorPrimary), 120)
207-
val ac = ContextCompat.getColor(requireContext(), R.color.colorAccent)
208-
CropImage.activity(uri)
209-
.setFixAspectRatio(true)
210-
.setAspectRatio(1, 1)
211-
.setCropShape(CropImageView.CropShape.OVAL)
212-
.setBackgroundColor(bg)
213-
.setBorderLineColor(ac)
214-
.setBorderCornerColor(ac)
215-
.setActivityMenuIconColor(ac)
216-
.setBorderLineThickness(getPixelsFromDp(requireContext(), 2))
217-
.setActivityTitle(getString(R.string.cut_profile_image))
218-
.setGuidelines(CropImageView.Guidelines.OFF)
219-
.start(requireContext(), this)
220-
}
221-
}
222-
CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE -> {
223-
val result = CropImage.getActivityResult(data)
224-
if (resultCode == Activity.RESULT_OK) {
225-
val imageUri = result.uri
226-
onImagePicked(imageUri)
227-
}
228-
}
229-
}
202+
private fun pickImage() {
203+
pickImageContract.launch("image/*")
204+
}
205+
206+
private fun onContentSelected(uri: Uri?) {
207+
uri ?: return
208+
val bg = ColorUtils.modifyAlpha(ContextCompat.getColor(requireContext(), R.color.colorPrimary), 120)
209+
val ac = ContextCompat.getColor(requireContext(), R.color.colorAccent)
210+
211+
val options = CropImageContractOptions(
212+
uri,
213+
CropImageOptions(
214+
fixAspectRatio = true,
215+
aspectRatioX = 1,
216+
aspectRatioY = 1,
217+
cropShape = CropImageView.CropShape.OVAL,
218+
backgroundColor = bg,
219+
borderLineColor = ac,
220+
borderCornerColor = ac,
221+
activityMenuIconColor = ac,
222+
borderLineThickness = getPixelsFromDp(requireContext(), 2),
223+
activityTitle = getString(R.string.cut_profile_image),
224+
guidelines = CropImageView.Guidelines.OFF
225+
)
226+
)
227+
228+
cropImage.launch(options)
230229
}
231230

232-
companion object {
233-
private const val REQUEST_SELECT_PICTURE = 8000
231+
private fun onCropResults(result: CropImageView.CropResult) {
232+
val imageUri = result.uriContent ?: return
233+
onImagePicked(imageUri)
234234
}
235235
}

app/src/main/java/com/forcetower/uefs/feature/profile/ProfileFragment.kt

Lines changed: 49 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -20,19 +20,22 @@
2020

2121
package com.forcetower.uefs.feature.profile
2222

23-
import android.app.Activity
24-
import android.content.Intent
2523
import android.graphics.drawable.Drawable
2624
import android.net.Uri
2725
import android.os.Bundle
2826
import android.view.LayoutInflater
2927
import android.view.View
3028
import android.view.ViewGroup
29+
import androidx.activity.result.contract.ActivityResultContracts
3130
import androidx.core.content.ContextCompat
3231
import androidx.core.os.bundleOf
3332
import androidx.core.view.doOnLayout
3433
import androidx.fragment.app.viewModels
3534
import androidx.lifecycle.Observer
35+
import com.canhub.cropper.CropImageContract
36+
import com.canhub.cropper.CropImageContractOptions
37+
import com.canhub.cropper.CropImageOptions
38+
import com.canhub.cropper.CropImageView
3639
import com.forcetower.core.adapters.ImageLoadListener
3740
import com.forcetower.core.utils.ColorUtils
3841
import com.forcetower.uefs.R
@@ -47,8 +50,6 @@ import com.forcetower.uefs.feature.shared.getPixelsFromDp
4750
import com.forcetower.uefs.feature.siecomp.session.PushUpScrollListener
4851
import com.google.firebase.auth.FirebaseAuth
4952
import com.google.firebase.storage.FirebaseStorage
50-
import com.theartofdev.edmodo.cropper.CropImage
51-
import com.theartofdev.edmodo.cropper.CropImageView
5253
import dagger.hilt.android.AndroidEntryPoint
5354
import javax.inject.Inject
5455

@@ -57,6 +58,14 @@ class ProfileFragment : UFragment() {
5758
@Inject lateinit var firebaseAuth: FirebaseAuth
5859
@Inject lateinit var firebaseStorage: FirebaseStorage
5960

61+
private val pickImageContract = registerForActivityResult(ActivityResultContracts.GetContent()) {
62+
onContentSelected(it)
63+
}
64+
65+
private val cropImage = registerForActivityResult(CropImageContract()) {
66+
onCropResults(it)
67+
}
68+
6069
private val viewModel: ProfileViewModel by viewModels()
6170
private val setupViewModel: SetupViewModel by viewModels()
6271
private lateinit var binding: FragmentProfileBinding
@@ -121,11 +130,10 @@ class ProfileFragment : UFragment() {
121130
}
122131

123132
viewModel.statements.observe(
124-
viewLifecycleOwner,
125-
Observer { statements ->
126-
adapter.statements = statements.sortedByDescending { it.createdAt }
127-
}
128-
)
133+
viewLifecycleOwner
134+
) { statements ->
135+
adapter.statements = statements.sortedByDescending { it.createdAt }
136+
}
129137

130138
binding.up.setOnClickListener {
131139
requireActivity().finishAfterTransition()
@@ -147,52 +155,46 @@ class ProfileFragment : UFragment() {
147155
}
148156
}
149157

150-
private fun pickImage() {
151-
val intent = Intent(Intent.ACTION_PICK)
152-
intent.type = "image/*"
153-
startActivityForResult(intent, REQUEST_SELECT_PICTURE)
158+
fun pickImage() {
159+
pickImageContract.launch("image/*")
160+
}
161+
162+
private fun onContentSelected(uri: Uri?) {
163+
uri ?: return
164+
val bg = ColorUtils.modifyAlpha(ContextCompat.getColor(requireContext(), R.color.colorPrimary), 120)
165+
val ac = ContextCompat.getColor(requireContext(), R.color.colorAccent)
166+
167+
val options = CropImageContractOptions(
168+
uri,
169+
CropImageOptions(
170+
fixAspectRatio = true,
171+
aspectRatioX = 1,
172+
aspectRatioY = 1,
173+
cropShape = CropImageView.CropShape.OVAL,
174+
backgroundColor = bg,
175+
borderLineColor = ac,
176+
borderCornerColor = ac,
177+
activityMenuIconColor = ac,
178+
borderLineThickness = getPixelsFromDp(requireContext(), 2),
179+
activityTitle = getString(R.string.cut_profile_image),
180+
guidelines = CropImageView.Guidelines.OFF
181+
)
182+
)
183+
184+
cropImage.launch(options)
185+
}
186+
187+
private fun onCropResults(result: CropImageView.CropResult) {
188+
val imageUri = result.uriContent ?: return
189+
onImagePicked(imageUri)
154190
}
155191

156192
private fun onImagePicked(uri: Uri) {
157193
setupViewModel.setSelectedImage(uri)
158194
setupViewModel.uploadImageToStorage()
159195
}
160196

161-
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
162-
super.onActivityResult(requestCode, resultCode, data)
163-
when (requestCode) {
164-
REQUEST_SELECT_PICTURE -> {
165-
if (resultCode == Activity.RESULT_OK && data != null && data.data != null) {
166-
val uri = data.data!!
167-
168-
val bg = ColorUtils.modifyAlpha(ContextCompat.getColor(requireContext(), R.color.colorPrimary), 120)
169-
val ac = ContextCompat.getColor(requireContext(), R.color.colorAccent)
170-
CropImage.activity(uri)
171-
.setFixAspectRatio(true)
172-
.setAspectRatio(1, 1)
173-
.setCropShape(CropImageView.CropShape.OVAL)
174-
.setBackgroundColor(bg)
175-
.setBorderLineColor(ac)
176-
.setBorderCornerColor(ac)
177-
.setActivityMenuIconColor(ac)
178-
.setBorderLineThickness(getPixelsFromDp(requireContext(), 2))
179-
.setActivityTitle(getString(R.string.cut_profile_image))
180-
.setGuidelines(CropImageView.Guidelines.OFF)
181-
.start(requireContext(), this)
182-
}
183-
}
184-
CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE -> {
185-
val result = CropImage.getActivityResult(data)
186-
if (resultCode == Activity.RESULT_OK) {
187-
val imageUri = result.uri
188-
onImagePicked(imageUri)
189-
}
190-
}
191-
}
192-
}
193-
194197
companion object {
195-
private const val REQUEST_SELECT_PICTURE = 8000
196198
fun newInstance(profileId: Long, userId: Long): ProfileFragment {
197199
return ProfileFragment().apply {
198200
arguments = bundleOf(

app/src/main/java/com/forcetower/uefs/feature/settings/AccountSettingsFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ class AccountSettingsFragment : PreferenceFragmentCompat() {
4040
setPreferencesFromResource(R.xml.settings_account, rootKey)
4141
}
4242

43-
private fun onPreferenceChange(preference: SharedPreferences, key: String) {
43+
private fun onPreferenceChange(preference: SharedPreferences, key: String?) {
4444
when (key) {
4545
"stg_choice_score" -> toggleScoreChoice(preference.getBoolean(key, false))
4646
}

0 commit comments

Comments
 (0)