Releases: supabase-community/supabase-kt
2.6.1
Changes
Postgrest
- Fix custom headers being ignored by
Postgrest#rpc
2.6.0-wasm0
Note
The Ktor EAP repository is no longer required as a new official beta of Ktor 3.0.0 has been released. You will also need to use this exact Ktor version for your engines.
Changes
- Migrate to Ktor 3.0.0-beta-2
- Merge
2.4.2
-2.6.0
changes into wasm
2.6.0
Note
The documentation has also been updated. Checkout the third-party auth overview page if you want to use Firebase Auth, AWS Cognito or Auth0 instead of Supabase Auth.
Changes
Core
- Update Kotlin to
2.0.10
Postgrest
- Expose
headers
andparams
inPostgrestRequestBuilder
by @jan-tennert in #689
You can now set custom headers & url parameters while making a postgrest request
Auth
- Add support for third-party auth by @jan-tennert in #688
You can now use third-party auth providers like Firebase Auth instead of Supabase Auth by specifying aAccessTokenProvider
in theSupabaseClientBuilder
:This will be used for theval supabase = createSupabaseClient(supabaseUrl, supabaseKey) { accessToken = { //fetch the third party token "my-token" } }
Authorization
header and other modules like Realtime and Storage integrations!
Note: TheAuth
plugin cannot be used in combination and will throw an exception if used when settingaccessToken
. - Changes to Multi-Factor-Authentication by @jan-tennert in #681
- Refactor the syntax for enrolling MFA factors and add support for the Phone factor type:
//Enrolling a phone factor val factor = client.auth.mfa.enroll(FactorType.Phone, friendlyName) { phone = "+123456789" } //Enrolling a TOTP factor val factor = client.auth.mfa.enroll(FactorType.TOTP, friendlyName) { issuer = "Issuer" }
- Add a
channel
parameter toMfaApi#createChallenge
to allow sending phone MFA messages to eitherSMS
orWHATSAPP
. - Deprecate
MfaApi#loggedInUsingMfa
andMfaApi#isMfaEnabled
& their flow variants in favor ofMfaApi#status
andMfaApi#statusFlow
:val (enabled, active) = client.auth.mfa.status //Flow variant client.auth.mfa.statusFlow.collect { (enabled, active) -> processChange(enabled, active) }
- Refactor the syntax for enrolling MFA factors and add support for the Phone factor type:
- Add
SlackOIDC
OAuthProvider
by @jan-tennert in #688
Realtime
- Remove client-side rate-limiting in #678 by @jan-tennert
- Fix broadcasting to a private channel via the HTTP API in #673 by @jan-tennert
- Fix callbacks not getting removed correctly in the
CallbackManager
in #673 by @jan-tennert - Change internal realtime implementation to be more robust and testable in #673 by @jan-tennert
- Add
Realtime.Config#websocketFactory
: This is highly internal and should be only modified if you know what you are doing
- Add
Storage
- The
StorageApi#authenticatedRequest
method is now suspending - All uploading methods will now return a
FileUploadResponse
instead of aString
, which includes the actual path and some other properties.
2.6.0-rc-1
Changes
Core
- Update Kotlin to
2.0.10
Postgrest
- Expose
headers
andparams
inPostgrestRequestBuilder
by @jan-tennert in #689
You can now set custom headers & url parameters while making a postgrest request
Auth
- Add support for third-party auth by @jan-tennert in #688
You can now use third-party auth providers like Firebase Auth instead of Supabase Auth by specifying aAccessTokenProvider
in theSupabaseClientBuilder
:This will be used for theval supabase = createSupabaseClient(supabaseUrl, supabaseKey) { accessToken = { //fetch the third party token "my-token" } }
Authorization
header and other modules like Realtime and Storage integrations!
Note: TheAuth
plugin cannot be used in combination and will throw an exception if used when settingaccessToken
. - Changes to Multi-Factor-Authentication by @jan-tennert in #681
- Refactor the syntax for enrolling MFA factors and add support for the Phone factor type:
//Enrolling a phone factor val factor = client.auth.mfa.enroll(FactorType.Phone, friendlyName) { phone = "+123456789" } //Enrolling a TOTP factor val factor = client.auth.mfa.enroll(FactorType.TOTP, friendlyName) { issuer = "Issuer" }
- Add a
channel
parameter toMfaApi#createChallenge
to allow sending phone MFA messages to eitherSMS
orWHATSAPP
. - Deprecate
MfaApi#loggedInUsingMfa
andMfaApi#isMfaEnabled
& their flow variants in favor ofMfaApi#status
andMfaApi#statusFlow
:val (enabled, active) = client.auth.mfa.status //Flow variant client.auth.mfa.statusFlow.collect { (enabled, active) -> processChange(enabled, active) }
- Refactor the syntax for enrolling MFA factors and add support for the Phone factor type:
- Add
SlackOIDC
OAuthProvider
by @jan-tennert in #688
Storage
- The
StorageApi#authenticatedRequest
method is now suspending - All uploading methods will now return a
FileUploadResponse
instead of aString
, which includes the actual path and some other properties.
2.6.0-beta-1
Changes
Realtime
- Remove client-side rate-limiting in #678 by @jan-tennert
- Fix broadcasting to a private channel via the HTTP API in #673 by @jan-tennert
- Fix callbacks not getting removed correctly in the
CallbackManager
in #673 by @jan-tennert - Change internal realtime implementation to be more robust and testable in #673 by @jan-tennert
- Add
Realtime.Config#websocketFactory
: This is highly internal and should be only modified if you know what you are doing.
- Add
2.5.4
2.5.3
2.5.2
Changes
Realtime
- fix(realtime): add private to Realtime by @grdsdev in #642
Add support for specifying if a channel is private viaRealtimeChannelBuilder#isPrivate
Compose Auth
- Fix Google sign in prompt in composeAuth by @Aaron246 in #648
- fix(auth): fix sign in with Apple in ComposeAuth by @grdsdev in #654
New Contributors
2.5.1
Note
Thanks to @manriif you can now write & deploy Supabase Edge Functions completely in Kotlin via Kotlin/JS! Check out the supabase-edge-functions-kt repository for more information!
Changes
Auth
- Ignore certain status codes when signing out a user by @jan-tennert in #633
Failure of signing out because of invalid/expired JWTs will now be ignored and the local session cleared.
2.5.0
Changes
Auth
-
Add error code enum for Auth API errors by @jan-tennert in #618
All rest errors containing aerror_code
field will now throw aAuthRestException
rather than genericBadRequestExceptions
, etc.
AuthRestException
s contain aerrorCode
field of the typeAuthErrorCode
containing all known error codes.
Two error codes have their own exceptions (but obviously inherit fromAuthRestException)
:AuthWeakPasswordException
andAuthSessionMissingException
.
API errors not containing this field will throw the generic exceptions. -
Handle
weak_password
andsession_not_found
auth error codes by @jan-tennert in #596
There is now a new subclass ofRestException
:AuthRestExcepton
which will be a super class for exceptions based on error codes. Currently, there are two new exceptions:AuthWeakPasswordException
andAuthSessionMissingException
Postgrest
- Add columns header to
PostgrestQueryBuilder#insert
by @jan-tennert in #611
This fixes an issue when inserting a list of objects where some objects might not have all keys. - Add
defaultToNull
parameter toPostgrestQueryBuilder#insert
Realtime
- Use
Postgrest
spropertyConversionMethod
for getting the property name of primary keys - Add the possibility to have a multi-column PK in realtime by @iruizmar in #614
- Fix presences updates for
RealtimeChannel#presenceDataFlow
working incorrectly by @JOsacky in #607
Compose Auth Ui
- Add
isError
parameter to Compose Auth Ui fields by @jan-tennert in #612 - Add AuthUiExperimental annotation by @iruizmar in #603
All composables now have aAuthUiExperimental
annotation instead ofSupabaseExperimental
Misc
- Update README.md by @rafalgawlik in #605
New Contributors
- @rafalgawlik made their first contribution in #605