Skip to content

Commit 52e04d7

Browse files
committed
Use GravatarQuickEditorActivity instead of the BottomSheet
As it is not viable to modify the activity to use `singleTask`, we need to implement the recently added GravatarQuickEditorActivity to handle the OAuth authorization.
1 parent 105ff34 commit 52e04d7

File tree

3 files changed

+40
-23
lines changed

3 files changed

+40
-23
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -289,19 +289,25 @@
289289
<data android:pathPrefix="/get/"/>
290290
</intent-filter>
291291

292-
<!-- https://lists.pocketcasts.com/.well-known/assetlinks.json is needed for this to work -->
293-
<intent-filter android:autoVerify="true">
292+
<meta-data
293+
android:name="android.app.shortcuts"
294+
android:resource="@xml/shortcuts"/>
295+
</activity>
296+
297+
<activity
298+
android:name="com.gravatar.quickeditor.ui.GravatarQuickEditorActivity"
299+
tools:node="merge">
300+
301+
<intent-filter>
294302
<action android:name="android.intent.action.VIEW" />
303+
295304
<category android:name="android.intent.category.DEFAULT" />
296305
<category android:name="android.intent.category.BROWSABLE" />
306+
297307
<data android:scheme="https"/>
298308
<data android:host="pocketcasts.com"/>
299309
<data android:pathPrefix="/gravatar-qe-redirect"/>
300310
</intent-filter>
301-
302-
<meta-data
303-
android:name="android.app.shortcuts"
304-
android:resource="@xml/shortcuts"/>
305311
</activity>
306312

307313
<activity-alias

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ espresso = "3.6.1"
2626
firebase = "33.3.0"
2727
fragment = "1.8.5"
2828
glance = "1.0.0"
29-
gravatar = "2.0.0"
29+
gravatar = "425-2090953c8b2f8b2917a74d5bd2c91c8d3b75f125"
3030
google-services = "4.4.2"
3131
hilt = "2.52"
3232
hilt-compiler = "1.2.0"

modules/features/profile/src/main/java/au/com/shiftyjelly/pocketcasts/profile/AccountDetailsFragment.kt

Lines changed: 27 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,9 @@ import au.com.shiftyjelly.pocketcasts.utils.log.LogBuffer
5353
import au.com.shiftyjelly.pocketcasts.views.dialog.ConfirmationDialog
5454
import au.com.shiftyjelly.pocketcasts.views.fragments.BaseFragment
5555
import au.com.shiftyjelly.pocketcasts.views.helper.NavigationIcon
56-
import com.gravatar.quickeditor.GravatarQuickEditor
56+
import com.gravatar.quickeditor.ui.GetQuickEditorResult
57+
import com.gravatar.quickeditor.ui.GravatarQuickEditorActivity
58+
import com.gravatar.quickeditor.ui.GravatarQuickEditorResult
5759
import com.gravatar.quickeditor.ui.editor.AuthenticationMethod
5860
import com.gravatar.quickeditor.ui.editor.AvatarPickerContentLayout
5961
import com.gravatar.quickeditor.ui.editor.GravatarQuickEditorParams
@@ -103,6 +105,19 @@ class AccountDetailsFragment : BaseFragment(), OnUserViewClickListener {
103105
private val viewModel: AccountDetailsViewModel by viewModels()
104106
private var binding: FragmentAccountDetailsBinding? = null
105107

108+
private val getQEResult = registerForActivityResult(GetQuickEditorResult()) { quickEditorResult ->
109+
when (quickEditorResult) {
110+
GravatarQuickEditorResult.AVATAR_SELECTED -> {
111+
Gravatar.refreshGravatarTimestamp()
112+
viewModel.signInState.observe(viewLifecycleOwner) { signInState ->
113+
binding?.userView?.signedInState = signInState
114+
}
115+
}
116+
117+
else -> { /* Do nothing */ }
118+
}
119+
}
120+
106121
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
107122
binding = FragmentAccountDetailsBinding.inflate(inflater, container, false)
108123
return binding?.root
@@ -132,23 +147,19 @@ class AccountDetailsFragment : BaseFragment(), OnUserViewClickListener {
132147
binding.btnChangeAvatar?.setOnClickListener {
133148
analyticsTracker.track(AnalyticsEvent.ACCOUNT_DETAILS_CHANGE_AVATAR)
134149
if (FeatureFlag.isEnabled(Feature.GRAVATAR_NATIVE_QUICK_EDITOR)) {
135-
GravatarQuickEditor.show(
136-
activity = requireActivity(),
137-
gravatarQuickEditorParams = GravatarQuickEditorParams {
138-
email = Email(signInState.email)
139-
avatarPickerContentLayout = AvatarPickerContentLayout.Horizontal
140-
},
141-
authenticationMethod = AuthenticationMethod.OAuth(
142-
OAuthParams {
143-
clientId = GRAVATAR_APP_ID
144-
redirectUri = Gravatar.GRAVATAR_QE_REDIRECT_URL
150+
getQEResult.launch(
151+
GravatarQuickEditorActivity.GravatarEditorActivityArguments(
152+
gravatarQuickEditorParams = GravatarQuickEditorParams {
153+
email = Email(signInState.email)
154+
avatarPickerContentLayout = AvatarPickerContentLayout.Horizontal
145155
},
156+
authenticationMethod = AuthenticationMethod.OAuth(
157+
OAuthParams {
158+
clientId = GRAVATAR_APP_ID
159+
redirectUri = Gravatar.GRAVATAR_QE_REDIRECT_URL
160+
},
161+
),
146162
),
147-
onAvatarSelected = {
148-
Gravatar.refreshGravatarTimestamp()
149-
binding.userView.signedInState = signInState
150-
},
151-
onDismiss = {},
152163
)
153164
} else {
154165
Gravatar.refreshGravatarTimestamp()

0 commit comments

Comments
 (0)