gotrue-csharp@4.2.7
signInAnonymously from the JS clientpostgrest-csharp@3.5.1
Rpc specifying a generic type for its return.postgrest-csharp@3.5.0
Table so that it matches new generic signatures.QueryFilter parameters to a more generic IPosgrestQueryFilter to support constructing new QueryFilters from a LINQ expression.
QueryFilters will now need to be defined as: new List<IPostgrestQueryFilter> { new QueryFilter(), ... }QueryFilter to support DateTime and DateTimeOffset using the ISO-8601 (https://stackoverflow.com/a/115002)functions-csharp@1.3.2
HttpTimeout to InvokeFunctionOptionsgotrue-csharp@4.2.6
postgrest-csharp@3.4.1
IgnoreOnInsertand IgnoreOnUpdate from ReferenceAttribute as changing these properties to false does not currently provide the expected functionality.Insert and Update not working on models that have Reference specified on a property with a non-null value.gotrue-csharp@4.2.5
postgrest-csharp@3.3.0
Not and Filter to include generic types for a better development experience.Table<TModel>.Not() signaturespostgrest-csharp@3.2.10
ToUniversalTime conversion in the LINQ Where parser.gotrue-csharp@4.2.3
postgrest-csharp@3.2.9
gotrue-csharp@4.2.2
ResetPasswordForEmail.postgrest-csharp@3.2.7
TableWithCache for Get requests that can pull reactive Models from cache before making a remote request.supabase-storage-csharp@1.4.0
SupabaseStorageException on failure status codes for Upload, Download, Move, CreateSignedUrl and CreateSignedUrls.gotrue-csharp@4.2.1
SetAuth does not actually set Authorization Headers for subsequent requests by implementing SetSession
RefreshToken(string refreshToken) and SetAuth(string accessToken in favor of SetSession(string accessToken, string refreshToken)RefreshAccessToken require accessToken and refreshToken as parameters - overrides the authorization headers to use the supplied tokenDateTime.UtcNow over DateTime.Now.realtime-csharp@6.0.4
IsSubscribe flag is flipped when encountering a channel error.postgrest-csharp@3.2.5
ReferenceAttribute by changing shouldFilterTopLevel to useInnerJoin and adds an additional constructor for ReferenceAttribute with a shortcut for specifying the JoinTypegotrue-csharp@4.1.1
postgrest-csharp@3.2.4
gotrue-csharp@4.1.0
postgrest-csharp@3.2.3
Thanks @wiverson for the work in this release!
functions-csharp@1.3.1, gotrue-csharp@4.0.4, postgrest-csharp@3.2.2, realtime-csharp@6.0.3, supabase-storage-csharp@1.3.2, supabase-core@0.0.3
Core.dll becomes Supabase.Core.dll which will hopefully prevent future collisions.PostgrestException now instead of Exception. A FailureHint.Reason is provided with failures if possible to parse.AddDebugListener is now available on the client to help with debuggingreauthentication endpoint which allows for secure password changes.RealtimeException in ConnectAsync() if the socket server is unreachable. After an initial connection has been established, the client will continue attempting reconnections indefinitely until disconnected.EventHandlers have been changed to delegates. This should allow for cleaner event data access over the previous subclassed EventArgs setup. Events are scoped accordingly. For example, the RealtimeSocket error handlers will receive events regarding socket connectivity; whereas the RealtimeChannel error handlers will receive events according to Channel joining/leaving/etc. This is implemented with the following methods prefixed by ( Add/Remove/Clear):
RealtimeBroadcast.AddBroadcastEventHandlerRealtimePresence.AddPresenceEventHandlerRealtimeSocket.AddStateChangedHandlerRealtimeSocket.AddMessageReceivedHandlerRealtimeSocket.AddHeartbeatHandlerRealtimeSocket.AddErrorHandlerRealtimeClient.AddDebugHandlerRealtimeClient.AddStateChangedHandlerRealtimeChannel.AddPostgresChangeHandlerRealtimeChannel.AddMessageReceivedHandlerRealtimeChannel.AddErrorHandlerPush.AddMessageReceivedHandlerClientOptions.Logger has been removed in favor of Client.AddDebugHandler() which allows for implementing custom logging solutions if desired.
client.AddDebugHandler((sender, message, exception) => Debug.WriteLine(message));
Connect() has been marked Obsolete in favor of ConnectAsync()Websocket.Client@4.6.1.RealtimeExceptions.XML file is now generated on build.Supabase.SupabaseOptions.SessionPersistor from using ISupabaseSessionHandler to IGotrueSessionPersistance<Session> (these are now synchronous operations).GotrueException. A Reason field has been added to GotrueException to clarify what happened. This should also be easier to manage as the Gotrue server API & messages evolve.Save/Load/Destroy have been simplified to no longer require async.Client.AddDebugListener() and the test cases for examples. This will allow you to implement your own logging strategy (write to temp file, console, user visible err console, etc).Options headers.Settings request to the stateless API only - you can now query the server instance to determine if it's got the settings you need. This might allow for things like a visual component in a tool to verify the GoTrue settings are working correctly, or tests that run differently depending on the server configuration.SignInWithIdToken for Apple/Google signing from LW7. A HUGE thank you to @wiverson!PostgresChangesOptions was not setting listenType in constructor. Thanks @Kuffs2205DownloadPublicFile method.Update dependency: gotrue-csharp@3.1.0
ProviderAuthState rather than a string.Update dependency: supabase-storage-csharp@1.2.9
SignInOptions (i.e. RedirectTo) on OAuth Provider SignIn requests.Unsubscribe. Thanks @Kuffs2205!ClientOptions which supports specifying Upload, Download, and Request timeouts.AuthState.Changed eventUploadOrUpdate now appropriately throws request exceptionspresence, broadcast and postgres_changes
Channel.PostgresChanges event will receive the wildcard * changes event, not Channel.OnMessage.Channel.OnInsert, Channel.OnUpdate, and Channel.OnDelete now conform to the server's payload of Response.Payload.**Data**Channel.OnInsert, Channel.OnUpdate, and Channel.OnDelete now return PostgresChangesEventArgsChannel to RealtimeChannelRealtimeSocket and adds a Client.OnReconnect event.ChannelOptions to Channel.ChannelOptionsChannelStateChangedEventArgs to Channel.ChannelStateChangedEventArgsPush to Channel.PushChannel.ChannelState to Constants.ChannelStateSocketResponse, SocketRequest, SocketResponsePayload, SocketResponseEventArgs, and SocketStateChangedEventArgs to Socket namespace.RealtimeBroadcastRealtimePresenceSession.CreatedAt a publicly settable property, which should fix incorrect dates on retrieved Sessions.Where when encountering a nullable type.== null and != nullPrimaryKey attribute defaults to shouldInsert: false as most uses will have the Database generate the primary key.Select, Where, OnConflict, Columns, Order, Update, Set, and DeleteGetHeaders is now passed to ModeledResponse and BaseModel so that the default Update and Delete methods use the latest credentialsGetHeaders is used in Rpc calls (re: #39)GetHeaders was not passing properly to SupabaseTable and Gotrue.Api[BREAKING CHANGES]
Client is no longer a singleton, singleton interactions (if desired) are left to the developer to implement.Client supports injection of dependent clients after initialization via property:
AuthFunctionsRealtimePostgrestStorageSupabaseModel contains no logic but remains for backwards compatibility. (Marked Obsolete)ClientOptions.ShouldInitializeRealtime was removed (no longer auto initialized)ClientOptions now references an ISupabaseSessionHandler which specifies expected functionality for session persistence on Gotrue (replaces ClientOptions.SessionPersistor, ClientOptions.SessionRetriever, and ClientOptions.SessionDestroyer).supabase-csharp and all child libraries now have support nullityOther Changes:
Big thank you to @veleek for his insight into these changes.
Table<T> methods. Thanks @devpikachu!WebClient and instead leverages HttpClient. Progress events on Upload and Download are now handled with EventHandler<float> instead of WebClient EventHandlers.redirect_url option for MagicLink sign in (Thanks @MisterJimson)NullValueHandling to be specified on a Column Attribute and for it to be honored on Inserts and Updates. Defaults to: NullValueHandling.Include.
SocketResponse now exposes a method: OldModel, that hydrates the OldRecord property into a model.SignUp will return a Session with a populated User object on an unconfirmed signup.
null check on Session.User will need to adjust accordingly.AdminUserAttributes)
storage-csharp, supabase-csharp now references new repo.ListUsers (paginate, sort, filter), GetUserById, CreateUser, and UpdateById