Colton Idle
09/20/2024, 3:13 AMsupabase.auth
.verifyEmailOtp(type = OtpType.Email.EMAIL, email = "email", token = "123456")
val session = supabase.auth.currentSessionOrNull()
println(session) //session is a valid object. hooray!
but then if I just restart my app and call
val session = supabase.auth.currentSessionOrNull()
println(session) //session is null
then i just get a null session. shouldn't my session persist?Colton Idle
09/20/2024, 3:15 AMJan
09/20/2024, 5:26 PMsessionStatus
flow and show a loading screen if the status is LoadingFromStorage/Initializing or just use Auth#awaitInitialization()
. After that the session should be there.Colton Idle
09/20/2024, 7:12 PMJan
09/20/2024, 7:13 PMColton Idle
09/20/2024, 7:14 PMColton Idle
09/20/2024, 7:23 PMColton Idle
09/20/2024, 7:24 PMfun logSesh() {
val session = supabase.auth.currentSessionOrNull()
println(session)
}
is my code. and it doesn't try to load latest session from storage until I call the above methodColton Idle
09/20/2024, 7:24 PMColton Idle
09/20/2024, 7:24 PMval supabase = createSupabaseClient(
supabaseUrl = "asdf",
supabaseKey = "fdas"
) {
install(Auth)
}
I thought ^ code would start my sessionColton Idle
09/20/2024, 7:25 PMColton Idle
09/20/2024, 7:25 PMJan
09/20/2024, 7:40 PMI thought ^ code would start my sessionWell, it should.
supabase.auth.currentSessionOrNull()
is only short for (sessionStatus as? SessionStatus.Authenticated)?.session
, so the method it self doesn't really do anythingColton Idle
09/20/2024, 7:42 PMColton Idle
09/20/2024, 7:43 PMJan
09/20/2024, 7:43 PMcurrentSessionOrNull
?Colton Idle
09/20/2024, 8:31 PMColton Idle
09/20/2024, 8:32 PMval supabase = createSupabaseClient(
supabaseUrl = "asdf",
supabaseKey = "zxcv"
) {
install(Auth)
println("got here")
}
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContent {
Supabase1Theme {
}
}
}
}
which gives me these logs
---------------------------- PROCESS STARTED (16449) for package com.example.supabase1 ----------------------------
163117.352 W A resource failed to call close.
163117.352 W A resource failed to call close.
163121.903 D Installing profile for com.example.supabase1Jan
09/20/2024, 8:58 PMval supabase = createSupabaseClient(
supabaseUrl = "",
supabaseKey = ""
) {
defaultLogLevel = LogLevel.DEBUG //shouldn't matter as the loading logs are on the INFO level
install(Auth)
println("got here")
}
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContent {
MyApplicationTheme {
Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
Greeting(
name = "Android",
modifier = Modifier.padding(innerPadding)
)
}
}
}
}
}
And I get these logs (after logging in before restart):
2024-09-20 225543.483 6829-6866 Supabase-Auth com.example.myapplication I Successfully loaded session from storage!
2024-09-20 225543.513 6829-6865 Supabase-Auth com.example.myapplication D Session found, auto refresh startedColton Idle
09/20/2024, 8:58 PMColton Idle
09/20/2024, 8:59 PMColton Idle
09/20/2024, 8:59 PMclass MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContent {
Supabase1Theme {
supabase
}
}
}
}
Colton Idle
09/20/2024, 9:00 PMColton Idle
09/20/2024, 9:00 PMColton Idle
09/20/2024, 9:04 PMplugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
}
android {
namespace = "com.example.supabase1"
compileSdk = 34
defaultConfig {
applicationId = "com.example.supabase1"
minSdk = 24
targetSdk = 34
versionCode = 1
versionName = "1.0"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
isMinifyEnabled = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"<http://proguard-rules.pro|proguard-rules.pro>"
)
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}
buildFeatures {
compose = true
}
}
dependencies {
implementation(libs.androidx.core.ktx)
implementation(libs.androidx.lifecycle.runtime.ktx)
implementation(libs.androidx.activity.compose)
implementation(platform(libs.androidx.compose.bom))
implementation(libs.androidx.ui)
implementation(libs.androidx.ui.graphics)
implementation(libs.androidx.ui.tooling.preview)
implementation(libs.androidx.material3)
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)
androidTestImplementation(platform(libs.androidx.compose.bom))
androidTestImplementation(libs.androidx.ui.test.junit4)
debugImplementation(libs.androidx.ui.tooling)
debugImplementation(libs.androidx.ui.test.manifest)
implementation(platform("io.github.jan-tennert.supabase:bom:3.0.0-beta-1"))
implementation("io.github.jan-tennert.supabase:auth-kt")
implementation("io.ktor:ktor-client-cio:3.0.0-rc-1")
}
Jan
09/20/2024, 9:05 PMclass MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContent {
MyApplicationTheme {
}
}
}
}
It also appears to stop working.Colton Idle
09/20/2024, 9:05 PMColton Idle
09/20/2024, 9:05 PMJan
09/20/2024, 9:07 PMJan
09/20/2024, 9:08 PMColton Idle
09/20/2024, 9:09 PMclass MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
Supabase1Theme {
Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
Button({}) {
Text("Test")
}
Text("Test")
Text("Test")
Text("Test")
Text("Test")
Text("Test")
Text("Test")
Text("Test")
Text("Test")
}
}
}
}
}
and it still doesn't get calledJan
09/20/2024, 9:11 PMMyApplicationTheme {
Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
Greeting(
name = "Android",
modifier = Modifier.padding(innerPadding)
)
}
}
That doesn't:
MyApplicationTheme {
Text("test")
}
But calling supabase does fix it:
MyApplicationTheme {
val status by supabase.auth.sessionStatus.collectAsState()
Text("test")
}
Colton Idle
09/20/2024, 10:43 PMJan
09/21/2024, 9:14 AM