/
ExampleApp.kt
102 lines (90 loc) · 3.36 KB
/
ExampleApp.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
package com.schibsted.account.example
import android.app.Application
import android.app.PendingIntent
import android.content.Intent
import android.os.Build
import com.schibsted.account.BuildConfig
import com.schibsted.account.example.ClientConfig.environment
import com.schibsted.account.example.HttpClient.instance
import com.schibsted.account.example.MainActivity.Companion.LOGIN_FAILED_EXTRA
import com.schibsted.account.webflows.activities.AuthorizationManagementActivity
import com.schibsted.account.webflows.client.Client
import com.schibsted.account.webflows.client.ClientConfiguration
import com.schibsted.account.webflows.tracking.SchibstedAccountTrackerStore
import com.schibsted.account.webflows.tracking.SchibstedAccountTrackingEvent
import com.schibsted.account.webflows.tracking.SchibstedAccountTrackingListener
import timber.log.Timber
class ExampleApp : Application() {
override fun onCreate() {
super.onCreate()
initClient()
initManualClient()
initAuthorizationManagement()
initTimber()
initTracking()
}
private fun initTracking() {
val listener = object : SchibstedAccountTrackingListener {
override fun onEvent(event: SchibstedAccountTrackingEvent) {
Timber.d("Tracked event ${event::class.simpleName.toString()}")
}
}
SchibstedAccountTrackerStore.addTrackingListener(listener)
}
private fun initTimber() {
if (BuildConfig.DEBUG) {
Timber.plant(Timber.DebugTree())
}
}
private fun initClient() {
val clientConfig = ClientConfiguration(
env = environment,
clientId = ClientConfig.clientId,
redirectUri = ClientConfig.loginRedirectUri
)
client = Client(
context = applicationContext,
configuration = clientConfig,
httpClient = instance
)
}
private fun initManualClient() {
val clientConfig = ClientConfiguration(
env = environment,
clientId = ClientConfig.clientId,
redirectUri = ClientConfig.manualLoginRedirectUri
)
manualClient = Client(
context = applicationContext,
configuration = clientConfig,
httpClient = instance,
logoutCallback = {
Timber.i("Received a logout event from client")
})
}
private fun initAuthorizationManagement() {
val completionIntent = Intent(this, MainActivity::class.java)
val cancelIntent = Intent(this, MainActivity::class.java)
cancelIntent.putExtra(LOGIN_FAILED_EXTRA, true)
cancelIntent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP
AuthorizationManagementActivity.setup(
client = client,
completionIntent = PendingIntent.getActivity(
this,
0,
completionIntent,
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) PendingIntent.FLAG_IMMUTABLE else 0
),
cancelIntent = PendingIntent.getActivity(
this,
1,
cancelIntent,
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) PendingIntent.FLAG_IMMUTABLE else 0
)
)
}
companion object {
lateinit var client: Client
lateinit var manualClient: Client
}
}