Skip to content

Commit 9647c0d

Browse files
committed
allow subdir
1 parent fe67286 commit 9647c0d

File tree

6 files changed

+328
-234
lines changed

6 files changed

+328
-234
lines changed

lib/features/auth/server_selection.dart

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,16 @@ import 'package:abs_flutter/models/setting.dart';
1111
import 'package:abs_flutter/provider/user_provider.dart';
1212
import 'package:dio/dio.dart';
1313
import 'package:flutter/material.dart';
14+
import 'package:flutter_hooks/flutter_hooks.dart';
1415
import 'package:flutter_platform_widgets/flutter_platform_widgets.dart';
1516
import 'package:flutter_riverpod/flutter_riverpod.dart';
1617
import 'package:go_router/go_router.dart';
1718
import 'package:quickalert/quickalert.dart';
1819

20+
// TODO: Use proper state management
1921
final usernameProvider = StateProvider<String>((ref) => '');
2022
final passwordProvider = StateProvider<String>((ref) => '');
23+
final subdomainProvider = StateProvider<String?>((ref) => 'audiobookshelf');
2124
final loginStateProvider =
2225
StateNotifierProvider<LoginStateNotifier, LoginState>(
2326
(ref) => LoginStateNotifier());
@@ -108,6 +111,27 @@ class ServerSelection extends ConsumerWidget {
108111
isServerInputValid: isServerInputValid,
109112
showHint: () => showHint(context)),
110113
const SizedBox(height: 16),
114+
HookBuilder(builder: (context) {
115+
final useSubdomain = useState<bool>(true);
116+
return Row(
117+
mainAxisAlignment: MainAxisAlignment.spaceBetween,
118+
children: [
119+
const Text('Use subdirectory'),
120+
Switch(
121+
value: useSubdomain.value,
122+
onChanged: (val) {
123+
useSubdomain.value = !useSubdomain.value;
124+
ref
125+
.read(subdomainProvider.notifier)
126+
.state =
127+
useSubdomain.value
128+
? 'audiobookshelf'
129+
: null;
130+
})
131+
],
132+
);
133+
}),
134+
const SizedBox(height: 16),
111135
if (loginState.isLoading)
112136
PlatformCircularProgressIndicator(),
113137
if (loginState.errorMessage.isNotEmpty)
@@ -321,9 +345,16 @@ class LoginButton extends ConsumerWidget {
321345
final protocol = ref.read(protocolProvider);
322346
final domain = ref.read(domainProvider);
323347
final port = ref.read(portProvider);
348+
final String? subdomain = ref.read(subdomainProvider);
349+
350+
print(subdomain);
324351

325352
Server server = Server(
326-
ssl: protocol == 'https://', host: domain, port: int.parse(port));
353+
ssl: protocol == 'https://',
354+
host: domain,
355+
port: int.parse(port),
356+
subdomain: subdomain);
357+
print('connecting to server: ${server.url}');
327358
setBasePathOverride(ref, server.url);
328359

329360
LoginRequest loginRequest = LoginRequest(

lib/models/server.dart

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,23 @@
1-
import 'package:freezed_annotation/freezed_annotation.dart';
21
import 'package:flutter/foundation.dart';
2+
import 'package:freezed_annotation/freezed_annotation.dart';
33

44
part 'server.freezed.dart';
5-
65
part 'server.g.dart';
76

87
@unfreezed
98
class Server with _$Server {
10-
119
Server._();
1210

1311
factory Server({
1412
required int port,
1513
required String host,
1614
required bool ssl,
15+
String? subdomain,
1716
}) = _Server;
1817

19-
2018
factory Server.fromJson(Map<String, dynamic> json) => _$ServerFromJson(json);
2119

2220
// Full URL to the server
23-
String get url => 'http${ssl ? 's' : ''}://$host:$port';
21+
String get url =>
22+
'http${ssl ? 's' : ''}://$host:$port${subdomain != null ? '/$subdomain' : ''}';
2423
}
25-

lib/models/server.freezed.dart

Lines changed: 29 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/models/server.g.dart

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

macos/Flutter/GeneratedPluginRegistrant.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import package_info_plus
1515
import path_provider_foundation
1616
import screen_retriever
1717
import shared_preferences_foundation
18-
import sqflite
18+
import sqflite_darwin
1919
import tray_manager
2020
import url_launcher_macos
2121
import window_manager

0 commit comments

Comments
 (0)