Store refresh tokens
This commit is contained in:
parent
18df0d030b
commit
bf9d5287ba
|
@ -43,13 +43,14 @@ class CameraTest {
|
||||||
|
|
||||||
db.userDao().insertUser(
|
db.userDao().insertUser(
|
||||||
UserDatabaseEntity(
|
UserDatabaseEntity(
|
||||||
user_id = "123",
|
user_id = "123",
|
||||||
instance_uri = "http://localhost",
|
instance_uri = "http://localhost",
|
||||||
username = "Testi",
|
username = "Testi",
|
||||||
display_name = "Testi Testo",
|
display_name = "Testi Testo",
|
||||||
avatar_static = "some_avatar_url",
|
avatar_static = "some_avatar_url",
|
||||||
isActive = true,
|
isActive = true,
|
||||||
accessToken = "token"
|
accessToken = "token",
|
||||||
|
refreshToken = refreshToken
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
db.close()
|
db.close()
|
||||||
|
|
|
@ -54,13 +54,14 @@ class DrawerMenuTest {
|
||||||
|
|
||||||
db.userDao().insertUser(
|
db.userDao().insertUser(
|
||||||
UserDatabaseEntity(
|
UserDatabaseEntity(
|
||||||
user_id = "123",
|
user_id = "123",
|
||||||
instance_uri = baseUrl.toString(),
|
instance_uri = baseUrl.toString(),
|
||||||
username = "Testi",
|
username = "Testi",
|
||||||
display_name = "Testi Testo",
|
display_name = "Testi Testo",
|
||||||
avatar_static = "some_avatar_url",
|
avatar_static = "some_avatar_url",
|
||||||
isActive = true,
|
isActive = true,
|
||||||
accessToken = "token"
|
accessToken = "token",
|
||||||
|
refreshToken = refreshToken
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
db.close()
|
db.close()
|
||||||
|
|
|
@ -61,13 +61,14 @@ class HomeFeedTest {
|
||||||
)
|
)
|
||||||
db.userDao().insertUser(
|
db.userDao().insertUser(
|
||||||
UserDatabaseEntity(
|
UserDatabaseEntity(
|
||||||
user_id = "123",
|
user_id = "123",
|
||||||
instance_uri = baseUrl.toString(),
|
instance_uri = baseUrl.toString(),
|
||||||
username = "Testi",
|
username = "Testi",
|
||||||
display_name = "Testi Testo",
|
display_name = "Testi Testo",
|
||||||
avatar_static = "some_avatar_url",
|
avatar_static = "some_avatar_url",
|
||||||
isActive = true,
|
isActive = true,
|
||||||
accessToken = "token"
|
accessToken = "token",
|
||||||
|
refreshToken = refreshToken
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
db.close()
|
db.close()
|
||||||
|
|
|
@ -77,13 +77,14 @@ class IntentTest {
|
||||||
|
|
||||||
db.userDao().insertUser(
|
db.userDao().insertUser(
|
||||||
UserDatabaseEntity(
|
UserDatabaseEntity(
|
||||||
user_id = "123",
|
user_id = "123",
|
||||||
instance_uri = baseUrl.toString(),
|
instance_uri = baseUrl.toString(),
|
||||||
username = "Testi",
|
username = "Testi",
|
||||||
display_name = "Testi Testo",
|
display_name = "Testi Testo",
|
||||||
avatar_static = "some_avatar_url",
|
avatar_static = "some_avatar_url",
|
||||||
isActive = true,
|
isActive = true,
|
||||||
accessToken = "token"
|
accessToken = "token",
|
||||||
|
refreshToken = refreshToken
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
db.close()
|
db.close()
|
||||||
|
|
|
@ -117,13 +117,14 @@ class LoginActivityOnlineTest {
|
||||||
|
|
||||||
db.userDao().insertUser(
|
db.userDao().insertUser(
|
||||||
UserDatabaseEntity(
|
UserDatabaseEntity(
|
||||||
user_id = "123",
|
user_id = "123",
|
||||||
instance_uri = server.getUrl().toString(),
|
instance_uri = server.getUrl().toString(),
|
||||||
username = "Testi",
|
username = "Testi",
|
||||||
display_name = "Testi Testo",
|
display_name = "Testi Testo",
|
||||||
avatar_static = "some_avatar_url",
|
avatar_static = "some_avatar_url",
|
||||||
isActive = true,
|
isActive = true,
|
||||||
accessToken = "token"
|
accessToken = "token",
|
||||||
|
refreshToken = refreshToken
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
db.close()
|
db.close()
|
||||||
|
|
|
@ -89,13 +89,14 @@ class PostFragmentUITests {
|
||||||
|
|
||||||
db.userDao().insertUser(
|
db.userDao().insertUser(
|
||||||
UserDatabaseEntity(
|
UserDatabaseEntity(
|
||||||
user_id = "123",
|
user_id = "123",
|
||||||
instance_uri = baseUrl.toString(),
|
instance_uri = baseUrl.toString(),
|
||||||
username = "Testi",
|
username = "Testi",
|
||||||
display_name = "Testi Testo",
|
display_name = "Testi Testo",
|
||||||
avatar_static = "some_avatar_url",
|
avatar_static = "some_avatar_url",
|
||||||
isActive = true,
|
isActive = true,
|
||||||
accessToken = "token"
|
accessToken = "token",
|
||||||
|
refreshToken = refreshToken
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
db.close()
|
db.close()
|
||||||
|
|
|
@ -55,13 +55,14 @@ class PostTest {
|
||||||
|
|
||||||
db.userDao().insertUser(
|
db.userDao().insertUser(
|
||||||
UserDatabaseEntity(
|
UserDatabaseEntity(
|
||||||
user_id = "123",
|
user_id = "123",
|
||||||
instance_uri = baseUrl.toString(),
|
instance_uri = baseUrl.toString(),
|
||||||
username = "Testi",
|
username = "Testi",
|
||||||
display_name = "Testi Testo",
|
display_name = "Testi Testo",
|
||||||
avatar_static = "some_avatar_url",
|
avatar_static = "some_avatar_url",
|
||||||
isActive = true,
|
isActive = true,
|
||||||
accessToken = "token"
|
accessToken = "token",
|
||||||
|
refreshToken = refreshToken
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
db.close()
|
db.close()
|
||||||
|
|
|
@ -24,7 +24,6 @@ import io.reactivex.SingleObserver
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||||
import io.reactivex.disposables.Disposable
|
import io.reactivex.disposables.Disposable
|
||||||
import io.reactivex.functions.BiFunction
|
import io.reactivex.functions.BiFunction
|
||||||
import io.reactivex.functions.Function3
|
|
||||||
import io.reactivex.schedulers.Schedulers
|
import io.reactivex.schedulers.Schedulers
|
||||||
import kotlinx.android.synthetic.main.activity_login.*
|
import kotlinx.android.synthetic.main.activity_login.*
|
||||||
import okhttp3.HttpUrl
|
import okhttp3.HttpUrl
|
||||||
|
@ -256,7 +255,7 @@ class LoginActivity : AppCompatActivity() {
|
||||||
//TODO check why we can't do onErrorReturn { null } which would make more sense ¯\_(ツ)_/¯
|
//TODO check why we can't do onErrorReturn { null } which would make more sense ¯\_(ツ)_/¯
|
||||||
//Also, maybe find a nicer way to do this, this feels hacky (although it can work fine)
|
//Also, maybe find a nicer way to do this, this feels hacky (although it can work fine)
|
||||||
val nullInstance = Instance(null, null, null, null, null, null, null, null)
|
val nullInstance = Instance(null, null, null, null, null, null, null, null)
|
||||||
val nullToken = Token(null, null, null, null)
|
val nullToken = Token(null, null, null, null, null)
|
||||||
|
|
||||||
Single.zip(
|
Single.zip(
|
||||||
pixelfedAPI.instance().onErrorReturn { nullInstance },
|
pixelfedAPI.instance().onErrorReturn { nullInstance },
|
||||||
|
@ -280,7 +279,7 @@ class LoginActivity : AppCompatActivity() {
|
||||||
}
|
}
|
||||||
|
|
||||||
DBUtils.storeInstance(db, instance)
|
DBUtils.storeInstance(db, instance)
|
||||||
storeUser(token.access_token, instance.uri)
|
storeUser(token.access_token, token.refresh_token, instance.uri)
|
||||||
wipeSharedSettings()
|
wipeSharedSettings()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -314,7 +313,7 @@ class LoginActivity : AppCompatActivity() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun storeUser(accessToken: String, instance: String) {
|
private fun storeUser(accessToken: String, refreshToken: String?, instance: String) {
|
||||||
pixelfedAPI.verifyCredentials("Bearer $accessToken")
|
pixelfedAPI.verifyCredentials("Bearer $accessToken")
|
||||||
.enqueue(object : Callback<Account> {
|
.enqueue(object : Callback<Account> {
|
||||||
override fun onResponse(call: Call<Account>, response: Response<Account>) {
|
override fun onResponse(call: Call<Account>, response: Response<Account>) {
|
||||||
|
@ -326,7 +325,8 @@ class LoginActivity : AppCompatActivity() {
|
||||||
user,
|
user,
|
||||||
instance,
|
instance,
|
||||||
activeUser = true,
|
activeUser = true,
|
||||||
accessToken = accessToken
|
accessToken = accessToken,
|
||||||
|
refreshToken = refreshToken
|
||||||
)
|
)
|
||||||
apiHolder.setDomainToCurrentUser(db)
|
apiHolder.setDomainToCurrentUser(db)
|
||||||
val intent = Intent(this@LoginActivity, MainActivity::class.java)
|
val intent = Intent(this@LoginActivity, MainActivity::class.java)
|
||||||
|
|
|
@ -8,7 +8,6 @@ import android.os.Bundle
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.widget.ImageView
|
import android.widget.ImageView
|
||||||
import androidx.annotation.DrawableRes
|
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import androidx.core.view.GravityCompat
|
import androidx.core.view.GravityCompat
|
||||||
|
@ -190,6 +189,7 @@ class MainActivity : AppCompatActivity() {
|
||||||
if (hasInternet(applicationContext)) {
|
if (hasInternet(applicationContext)) {
|
||||||
val domain = user?.instance_uri.orEmpty()
|
val domain = user?.instance_uri.orEmpty()
|
||||||
val accessToken = user?.accessToken.orEmpty()
|
val accessToken = user?.accessToken.orEmpty()
|
||||||
|
val refreshToken = user?.refreshToken
|
||||||
val api = apiHolder.api ?: apiHolder.setDomainToCurrentUser(db)
|
val api = apiHolder.api ?: apiHolder.setDomainToCurrentUser(db)
|
||||||
api.verifyCredentials("Bearer $accessToken")
|
api.verifyCredentials("Bearer $accessToken")
|
||||||
.enqueue(object : Callback<Account> {
|
.enqueue(object : Callback<Account> {
|
||||||
|
@ -199,7 +199,7 @@ class MainActivity : AppCompatActivity() {
|
||||||
) {
|
) {
|
||||||
if (response.body() != null && response.isSuccessful) {
|
if (response.body() != null && response.isSuccessful) {
|
||||||
val account = response.body() as Account
|
val account = response.body() as Account
|
||||||
DBUtils.addUser(db, account, domain, accessToken = accessToken)
|
DBUtils.addUser(db, account, domain, accessToken = accessToken, refreshToken = refreshToken)
|
||||||
fillDrawerAccountInfo(account.id!!)
|
fillDrawerAccountInfo(account.id!!)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,6 @@ package com.h.pixeldroid.db.entities
|
||||||
import androidx.room.Entity
|
import androidx.room.Entity
|
||||||
import androidx.room.ForeignKey
|
import androidx.room.ForeignKey
|
||||||
import androidx.room.Index
|
import androidx.room.Index
|
||||||
import com.h.pixeldroid.db.entities.InstanceDatabaseEntity
|
|
||||||
|
|
||||||
@Entity(
|
@Entity(
|
||||||
tableName = "users",
|
tableName = "users",
|
||||||
|
@ -17,12 +16,13 @@ import com.h.pixeldroid.db.entities.InstanceDatabaseEntity
|
||||||
)],
|
)],
|
||||||
indices = [Index(value = ["instance_uri"])]
|
indices = [Index(value = ["instance_uri"])]
|
||||||
)
|
)
|
||||||
data class UserDatabaseEntity (
|
data class UserDatabaseEntity(
|
||||||
var user_id: String,
|
var user_id: String,
|
||||||
var instance_uri: String,
|
var instance_uri: String,
|
||||||
var username: String,
|
var username: String,
|
||||||
var display_name: String,
|
var display_name: String,
|
||||||
var avatar_static: String,
|
var avatar_static: String,
|
||||||
var isActive: Boolean,
|
var isActive: Boolean,
|
||||||
var accessToken: String
|
var accessToken: String,
|
||||||
|
val refreshToken: String?
|
||||||
)
|
)
|
|
@ -2,6 +2,7 @@ package com.h.pixeldroid.objects
|
||||||
|
|
||||||
data class Token(
|
data class Token(
|
||||||
val access_token: String?,
|
val access_token: String?,
|
||||||
|
val refresh_token: String?,
|
||||||
val token_type: String?,
|
val token_type: String?,
|
||||||
val scope: String?,
|
val scope: String?,
|
||||||
val created_at: Int?
|
val created_at: Int?
|
||||||
|
|
|
@ -19,7 +19,7 @@ class DBUtils {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun addUser(db: AppDatabase, account: Account, instance_uri: String, activeUser: Boolean = true, accessToken: String) {
|
fun addUser(db: AppDatabase, account: Account, instance_uri: String, activeUser: Boolean = true, accessToken: String, refreshToken: String?) {
|
||||||
db.userDao().insertUser(
|
db.userDao().insertUser(
|
||||||
UserDatabaseEntity(
|
UserDatabaseEntity(
|
||||||
user_id = account.id!!,
|
user_id = account.id!!,
|
||||||
|
@ -29,7 +29,8 @@ class DBUtils {
|
||||||
display_name = account.getDisplayName(),
|
display_name = account.getDisplayName(),
|
||||||
avatar_static = account.avatar_static.orEmpty(),
|
avatar_static = account.avatar_static.orEmpty(),
|
||||||
isActive = activeUser,
|
isActive = activeUser,
|
||||||
accessToken = accessToken
|
accessToken = accessToken,
|
||||||
|
refreshToken = refreshToken
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue