Backend: - PATCH /api/wahl/:wahlId (isOpen) to open/close a Wahl. - GET /api/wahl/:wahlId/teilnehmer (LT): participants with their priorities and any existing Force-Zuteilung. - Verified against local Postgres: PATCH toggles isOpen, teilnehmer list returns, CSV export works. (A stale dev server on :3000 masked this at first — real routes are fine.) Client (client/app/): - Wahl detail: open/close switch, participant list with a "Zuteilen" (Force-Zuteilung) action, CSV export via a browser download (browser.downloadText). - files_admin_screen.dart: LT file upload — browser.pickFile() + visibility picker -> multipart POST /api/files/:kcId; list existing files. Reachable from KcDetailScreen. - browser_web.dart gains pickFile()/downloadText() (native <input file> + Blob), with throwing stubs for the VM. - Dropped the file_picker package again (heavy transitive deps, and the native web input is enough); disk on this box is nearly full. flutter analyze/test/build web green; backend npm test 56. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
15 lines
702 B
Dart
15 lines
702 B
Dart
// Non-web fallback: the OIDC redirect flow only runs in a browser.
|
|
const _msg = 'Browser-only: OIDC login is not available on this platform.';
|
|
|
|
void setSession(String key, String value) => throw UnsupportedError(_msg);
|
|
String? getSession(String key) => throw UnsupportedError(_msg);
|
|
void removeSession(String key) => throw UnsupportedError(_msg);
|
|
Never redirect(String url) => throw UnsupportedError(_msg);
|
|
Map<String, String> currentQueryParameters() => const {};
|
|
void clearQuery() {}
|
|
|
|
Future<({String name, List<int> bytes})?> pickFile() async =>
|
|
throw UnsupportedError(_msg);
|
|
void downloadText(String filename, String content, {String mime = 'text/plain'}) =>
|
|
throw UnsupportedError(_msg);
|