feat(android): sign-in with google & magic-link & email (#9868)
- [chore(android): migrate to version catalog](16c0fb66e7) - [feat(android): integrate apollo](4dcf93b4f9) - [fix(android): fix android email sign-in](752cf34f33) - [chore(android): add stable/canary environment](72a96bfa5f) - [feat(android): set cookies for apollo client](7664cc4f19) - [feat(android): google & magic-link sign-in](c54ce3b43b) - [eat(android): change logo](8c5062adbc) - [chore(android): fix pipleline](4a68299be4) - [fix(android): rebase issues](c6858c5ecf) - [docs(android): update README for compat with java 21](6eac3ba0dc) - [fix(android): android pipeline](1103c87880)
This commit is contained in:
@@ -2,14 +2,23 @@ package app.affine.pro
|
||||
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import androidx.annotation.RequiresApi
|
||||
import com.getcapacitor.BridgeActivity
|
||||
import uniffi.affine_mobile_native.hashcashMint;
|
||||
import com.getcapacitor.plugin.CapacitorCookies
|
||||
import com.getcapacitor.plugin.CapacitorHttp
|
||||
import ee.forgr.capacitor_inappbrowser.InAppBrowserPlugin
|
||||
|
||||
|
||||
class MainActivity : BridgeActivity() {
|
||||
@RequiresApi(Build.VERSION_CODES.R)
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
registerPlugins(
|
||||
listOf(
|
||||
CapacitorHttp::class.java,
|
||||
CapacitorCookies::class.java,
|
||||
InAppBrowserPlugin::class.java
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
package app.affine.pro.service
|
||||
|
||||
import app.affine.pro.BuildConfig
|
||||
import app.affine.pro.service.interceptor.CookieInterceptor
|
||||
import com.apollographql.apollo.ApolloClient
|
||||
import com.apollographql.apollo.api.ApolloResponse
|
||||
import com.apollographql.apollo.api.Mutation
|
||||
import com.apollographql.apollo.api.Query
|
||||
import com.apollographql.apollo.api.Subscription
|
||||
|
||||
object AffineClient {
|
||||
|
||||
private val _client: ApolloClient by lazy {
|
||||
ApolloClient.Builder().serverUrl(BuildConfig.BASE_URL)
|
||||
.addHttpInterceptor(CookieInterceptor)
|
||||
.build()
|
||||
}
|
||||
|
||||
suspend fun <D : Query.Data> query(query: Query<D>): ApolloResponse<D> {
|
||||
return _client.query(query).execute()
|
||||
}
|
||||
|
||||
suspend fun <D : Mutation.Data> mutation(mutation: Mutation<D>): ApolloResponse<D> {
|
||||
return _client.mutation(mutation).execute()
|
||||
}
|
||||
|
||||
suspend fun <D : Subscription.Data> subscription(subscription: Subscription<D>): ApolloResponse<D> {
|
||||
return _client.subscription(subscription).execute()
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package app.affine.pro.service.interceptor
|
||||
|
||||
import android.webkit.CookieManager
|
||||
import app.affine.pro.BuildConfig
|
||||
import com.apollographql.apollo.api.http.HttpRequest
|
||||
import com.apollographql.apollo.network.http.HttpInterceptor
|
||||
import com.apollographql.apollo.network.http.HttpInterceptorChain
|
||||
|
||||
object CookieInterceptor : HttpInterceptor {
|
||||
override suspend fun intercept(
|
||||
request: HttpRequest,
|
||||
chain: HttpInterceptorChain
|
||||
) = chain.proceed(
|
||||
request.newBuilder().addHeader(
|
||||
"Cookie", CookieManager.getInstance().getCookie(BuildConfig.BASE_URL)
|
||||
).build()
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user