Feat/backend seperation - #520
Merged
Merged
Conversation
Tracks the extracted pure Dart Riverpod/sqlite3 client so the app can migrate onto it next.
Replace the Drift/SPH singleton stack with package providers, auth redirects, and a home shell route table so accounts and applets are managed through one client API.
Wire UI to supportedAppletPhpUrls, invalidate parsers on switch via liblanis, and route offline applet opens through full loginWithAccount.
Process background accounts sequentially, avoid startup/bootstrap races, route to the first supported home applet, and fix logout/login edge cases.
…ttings. Avoid requireValue crashes during brief session gaps and reload notification applet toggles when supportedAppletPhpUrls changes.
…tes. Allow /login while authenticated, restore the previous account after a failed switch, roll back orphan accounts on login failure, and gate storage/study-groups.
Guard parser watches, null-check conversation content, fix chat dispose order, storage downloads, substitutions TabController churn, and notification settings account binding.
Load JSON list defaults in CombinedAppletBuilder, guard Moodle/settings parser watches during session gaps, and avoid spreading a null lesson-colors map.
Prevent QuickActions re-init crashes, racey setState after awaits, broken calendar/course retries, and dispose races from unawaited substitutions notifications; point liblanis at awaited fetchData.
Keep the failed account for ResetAccount, allow /accounts during auth, run background applet tasks sequentially, and harden lessons/startup error paths.
Validate new passwords before saving, keep error auth on /login, and avoid dismiss/loading crashes in teacher and conversation create paths.
Offline or untyped sessions no longer crash on applet open; send/hide/create and file downloads recover from failures instead of stuck UI.
Uses TickerMode so offstage shell tabs do not start keepAlive parser refreshes.
Defer Moodle load until the WebView exists, treat all chat FutureBuilder errors, validate upload dates, cancel the editor subscription, and stop force-unwrapping null timetables/account types in background.
Null status messages and missing plan/hours no longer crash settings or upload success handling.
Legacy lib/models copies and the empty chat background are gone; calendar unescapes HTML locally, and liblanis drops unused Future providers.
Rename sph_bootstrap to lanis_bootstrap and switch SessionHandler/sphConfig call sites to LanisSession/lanisConfig.
Router shell branches and first-supported-home helpers now share one list with definitions, including lessons teacher/student via bodyBuilder.
Auth lives under features/auth, UI tiles under widgets/, AccountType l10n under l10n/, and app file helpers no longer collide with liblanis FileInfo.
Shrink god-files by moving private widgets and helpers into sibling modules without changing behavior.
Move hard-coded German UI strings into ARB so de/en stay in sync.
noBadgeConversations was OR-ed into the badge condition, so opening a thread forced the unread indicator on instead of clearing it.
Capture crashes and uncaught exceptions against the self-hosted GlitchTip DSN with traces, performance, logs, and replay disabled.
Satisfies Flutter's minimum Gradle warn threshold for upcoming support drops.
Block cold start, login, and background fetch until the published policy version is stored in shared settings, and unify the policy URL. Co-authored-by: Cursor <cursoragent@cursor.com>
Keep error reporting only by turning off sendDefaultPii and auto session envelopes. Co-authored-by: Cursor <cursoragent@cursor.com>
Wire analyzer/unit CI, FakeSession auth seams, redirect/badge helpers, and broad coverage around privacy, offline list, and theme/home path logic without live SPH parsing.
Sync the real path into Sentry transaction/tags and shell observers so issues no longer stick on /startup after redirects.
Show the blocking policy screen only when accounts already exist; new users accept via the login checkbox instead.
Gate outbound events behind a shared setting with settings UI and an optional signup checkbox that mirrors the existing device choice.
Persist applet maps by value type, recover bad Map.toString leftovers, and harden color helpers so lesson-colors can no longer load as false.
Use a conditional map entry for the optional from path so CI analyze can pass.
Treat AsyncError on sessionProvider as a recoverable AppletErrorView so a failed or null session no longer looks like endless loading.
- Adjusted ConversationsTabletShell to expand child widget when not on home. - Updated SafeArea in chat view to remove horizontal insets for better layout on devices with landscape cutouts. - Added explicit calculation for floating list header height in conversations view to prevent layout issues. - Refactored multiple instances of content retrieval for clarity and consistency. - Improved padding and button structure in course overview for better visual alignment. - Enhanced student timetable view with conditional rendering based on data availability.
Migrate sqlite off sqlite3_flutter_libs, disable broken SPM defaults, switch Moodle to zikzak_inappwebview, and raise the iOS deployment target to 16.
Wire liblanis onUnexpectedError through bootstrap so opted-in users report parse/runtime fetch failures with an applet breadcrumb.
Keep nav rail at 600px while messages master-detail only activates above 780px so mid-width layouts stay usable.
Rename the helper to isSplitView so conversations and settings share the 780px master-detail threshold while nav chrome stays at 600px.
Member
Author
|
@IzzySoft the latest changes (v4) do add the sentry flutter sdk to this application. The server is a self-hosted instance of glitchtip, which is sentry-SDK compatible and uses way less resources. Sentry is configured to send nothing other than crash logs. It is an opt in feature, off per default. You may want to edit the anti-features list. The already existing self-made telemetry is is left as is and there is no way of opting out. |
Contributor
|
So opt-in Sentry is added on top of the existing one? Then no changes are needed (no need to mention Sentry in addition, as it is opt-in). |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.