Added google play testing accounts and testing environment
This commit is contained in:
@ -5,6 +5,7 @@ import 'package:http/http.dart' as http;
|
||||
import 'package:http/http.dart';
|
||||
|
||||
import '../../../model/accountData.dart';
|
||||
import '../../../model/timetable/endpointData.dart';
|
||||
import 'autocompleteResponse.dart';
|
||||
|
||||
class AutocompleteApi {
|
||||
@ -21,7 +22,7 @@ class AutocompleteApi {
|
||||
headers.putIfAbsent("Accept", () => "application/json");
|
||||
headers.putIfAbsent("OCS-APIRequest", () => "true");
|
||||
|
||||
Uri endpoint = Uri.https("${AccountData().buildHttpAuthString()}@cloud.marianum-fulda.de", "/ocs/v2.php/core/autocomplete/get", getParameters);
|
||||
Uri endpoint = Uri.https("${AccountData().buildHttpAuthString()}@${EndpointData().nextcloud().domain}", "${EndpointData().nextcloud().path}/ocs/v2.php/core/autocomplete/get", getParameters);
|
||||
|
||||
Response response = await http.get(endpoint, headers: headers);
|
||||
if(response.statusCode != HttpStatus.ok) throw Exception("Api call failed with ${response.statusCode}: ${response.body}");
|
||||
|
@ -4,6 +4,7 @@ import 'package:http/http.dart' as http;
|
||||
import 'package:http/http.dart';
|
||||
|
||||
import '../../../model/accountData.dart';
|
||||
import '../../../model/timetable/endpointData.dart';
|
||||
import 'fileSharingApiParams.dart';
|
||||
|
||||
class FileSharingApi {
|
||||
@ -12,7 +13,7 @@ class FileSharingApi {
|
||||
headers.putIfAbsent("Accept", () => "application/json");
|
||||
headers.putIfAbsent("OCS-APIRequest", () => "true");
|
||||
|
||||
Uri endpoint = Uri.https("${AccountData().buildHttpAuthString()}@cloud.marianum-fulda.de", "/ocs/v2.php/apps/files_sharing/api/v1/shares", query.toJson().map((key, value) => MapEntry(key, value.toString())));
|
||||
Uri endpoint = Uri.https("${AccountData().buildHttpAuthString()}@${EndpointData().nextcloud().domain}", "${EndpointData().nextcloud().path}/ocs/v2.php/apps/files_sharing/api/v1/shares", query.toJson().map((key, value) => MapEntry(key, value.toString())));
|
||||
Response response = await http.post(endpoint, headers: headers);
|
||||
|
||||
if(response.statusCode != HttpStatus.ok) {
|
||||
|
@ -3,6 +3,7 @@ import 'dart:developer';
|
||||
import 'package:http/http.dart' as http;
|
||||
|
||||
import '../../../model/accountData.dart';
|
||||
import '../../../model/timetable/endpointData.dart';
|
||||
import '../../apiError.dart';
|
||||
import '../../apiParams.dart';
|
||||
import '../../apiRequest.dart';
|
||||
@ -32,7 +33,7 @@ abstract class TalkApi<T> extends ApiRequest {
|
||||
getParameters?.update(key, (value) => value.toString());
|
||||
});
|
||||
|
||||
Uri endpoint = Uri.https("${AccountData().buildHttpAuthString()}@cloud.marianum-fulda.de", "/ocs/v2.php/apps/spreed/api/$path", getParameters);
|
||||
Uri endpoint = Uri.https("${AccountData().buildHttpAuthString()}@${EndpointData().nextcloud().domain}", "${EndpointData().nextcloud().path}/ocs/v2.php/apps/spreed/api/$path", getParameters);
|
||||
|
||||
headers ??= {};
|
||||
headers?.putIfAbsent("Accept", () => "application/json");
|
||||
|
@ -1,6 +1,7 @@
|
||||
import 'package:nextcloud/nextcloud.dart';
|
||||
|
||||
import '../../../model/accountData.dart';
|
||||
import '../../../model/timetable/endpointData.dart';
|
||||
import '../../apiRequest.dart';
|
||||
import '../../apiResponse.dart';
|
||||
|
||||
@ -17,10 +18,10 @@ abstract class WebdavApi<T> extends ApiRequest {
|
||||
static Future<String> webdavConnectString = buildWebdavConnectString();
|
||||
|
||||
static Future<WebDavClient> establishWebdavConnection() async {
|
||||
return NextcloudClient("https://cloud.marianum-fulda.de/", username: AccountData().getUsername(), password: AccountData().getPassword(), loginName: AccountData().getUsername()).webdav;
|
||||
return NextcloudClient("https://${EndpointData().nextcloud().full()}", username: AccountData().getUsername(), password: AccountData().getPassword(), loginName: AccountData().getUsername()).webdav;
|
||||
}
|
||||
|
||||
static Future<String> buildWebdavConnectString() async {
|
||||
return "https://${AccountData().buildHttpAuthString()}@cloud.marianum-fulda.de/remote.php/dav/files/${AccountData().getUsername()}/";
|
||||
return "https://${AccountData().buildHttpAuthString()}@${EndpointData().nextcloud().full()}/remote.php/dav/files/${AccountData().getUsername()}/";
|
||||
}
|
||||
}
|
@ -1,6 +1,7 @@
|
||||
import 'dart:convert';
|
||||
import 'package:http/http.dart' as http;
|
||||
|
||||
import '../../model/timetable/endpointData.dart';
|
||||
import '../apiParams.dart';
|
||||
import '../apiRequest.dart';
|
||||
import '../apiResponse.dart';
|
||||
@ -8,7 +9,7 @@ import 'queries/authenticate/authenticate.dart';
|
||||
import 'webuntisError.dart';
|
||||
|
||||
abstract class WebuntisApi extends ApiRequest {
|
||||
Uri endpoint = Uri.parse("https://peleus.webuntis.com/WebUntis/jsonrpc.do?school=marianum-fulda");
|
||||
Uri endpoint = Uri.parse("https://${EndpointData().webuntis().full()}/WebUntis/jsonrpc.do?school=marianum-fulda");
|
||||
String method;
|
||||
ApiParams? genericParam;
|
||||
http.Response? response;
|
||||
|
@ -43,13 +43,13 @@ class AccountData {
|
||||
await _updateFromStorage();
|
||||
}
|
||||
|
||||
void removeData(BuildContext context) async {
|
||||
Future<void> removeData(BuildContext context) async {
|
||||
_populated = Completer();
|
||||
Provider.of<AccountModel>(context, listen: false).setState(AccountModelState.loggedOut);
|
||||
|
||||
SharedPreferences storage = await _storage;
|
||||
storage.remove(_usernameField);
|
||||
storage.remove(_passwordField);
|
||||
await storage.remove(_usernameField);
|
||||
await storage.remove(_passwordField);
|
||||
}
|
||||
|
||||
Future<void> _updateFromStorage() async {
|
||||
|
76
lib/model/timetable/endpointData.dart
Normal file
76
lib/model/timetable/endpointData.dart
Normal file
@ -0,0 +1,76 @@
|
||||
|
||||
import '../accountData.dart';
|
||||
|
||||
enum EndpointMode {
|
||||
live,
|
||||
stage,
|
||||
}
|
||||
|
||||
class EndpointOptions {
|
||||
Endpoint live;
|
||||
Endpoint? staged;
|
||||
EndpointOptions({required this.live, required this.staged});
|
||||
|
||||
Endpoint get(EndpointMode mode) {
|
||||
if(staged == null || mode == EndpointMode.live) return live;
|
||||
return staged!;
|
||||
}
|
||||
}
|
||||
|
||||
class Endpoint {
|
||||
String domain;
|
||||
String path;
|
||||
|
||||
Endpoint({required this.domain, this.path = ""});
|
||||
|
||||
String full() {
|
||||
return domain + path;
|
||||
}
|
||||
}
|
||||
|
||||
class EndpointData {
|
||||
static final EndpointData _instance = EndpointData._construct();
|
||||
|
||||
String? usernameOverride;
|
||||
|
||||
factory EndpointData() {
|
||||
return _instance;
|
||||
}
|
||||
|
||||
EndpointData._construct();
|
||||
|
||||
EndpointMode getEndpointMode() {
|
||||
late String existingName;
|
||||
if(usernameOverride != null) {
|
||||
existingName = usernameOverride!;
|
||||
} else {
|
||||
existingName = AccountData().getUsername();
|
||||
}
|
||||
return existingName.startsWith("google") ? EndpointMode.stage : EndpointMode.live;
|
||||
}
|
||||
|
||||
Endpoint webuntis() {
|
||||
return EndpointOptions(
|
||||
live: Endpoint(
|
||||
domain: "peleus.webuntis.com",
|
||||
),
|
||||
staged: Endpoint(
|
||||
domain: "mhsl.eu",
|
||||
path: "/marianum/marianummobile/webuntis/public/index.php/api"
|
||||
),
|
||||
).get(getEndpointMode());
|
||||
}
|
||||
|
||||
Endpoint nextcloud() {
|
||||
return EndpointOptions(
|
||||
live: Endpoint(
|
||||
domain: "cloud.marianum-fulda.de",
|
||||
),
|
||||
staged: Endpoint(
|
||||
domain: "mhsl.eu",
|
||||
path: "/marianum/marianummobile/cloud",
|
||||
)
|
||||
).get(getEndpointMode());
|
||||
}
|
||||
|
||||
}
|
@ -1,6 +1,7 @@
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_login/flutter_login.dart';
|
||||
import 'package:marianum_mobile/model/timetable/endpointData.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
import '../../api/webuntis/queries/authenticate/authenticateParams.dart';
|
||||
@ -23,15 +24,17 @@ class _LoginState extends State<Login> {
|
||||
}
|
||||
|
||||
Future<String?> _login(LoginData data) async {
|
||||
AccountData().removeData(context);
|
||||
await AccountData().removeData(context);
|
||||
|
||||
try {
|
||||
EndpointData().usernameOverride = data.name;
|
||||
await Authenticate(
|
||||
AuthenticateParams(
|
||||
user: data.name,
|
||||
password: data.password,
|
||||
)
|
||||
).run().then((value) async {
|
||||
EndpointData().usernameOverride = null;
|
||||
await AccountData().setData(context, data.name, data.password);
|
||||
|
||||
setState(() {
|
||||
@ -41,7 +44,7 @@ class _LoginState extends State<Login> {
|
||||
} catch(e) {
|
||||
return e.toString();
|
||||
}
|
||||
|
||||
await Future.delayed(const Duration(seconds: 1));
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -2,6 +2,7 @@
|
||||
import 'package:cached_network_image/cached_network_image.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_linkify/flutter_linkify.dart';
|
||||
import 'package:marianum_mobile/model/timetable/endpointData.dart';
|
||||
import 'package:url_launcher/url_launcher_string.dart';
|
||||
|
||||
import '../../../api/marianumcloud/talk/chat/getChatResponse.dart';
|
||||
@ -48,7 +49,7 @@ class ChatMessage {
|
||||
placeholder: (context, url) {
|
||||
return const Padding(padding: EdgeInsets.all(10), child: CircularProgressIndicator());
|
||||
},
|
||||
imageUrl: "https://cloud.marianum-fulda.de/core/preview?fileId=${file!.id}&x=100&y=-1&a=1",
|
||||
imageUrl: "https://${EndpointData().nextcloud().full()}/core/preview?fileId=${file!.id}&x=100&y=-1&a=1",
|
||||
httpHeaders: {
|
||||
"Authorization": "Basic ${AccountData().buildHttpAuthString()}"
|
||||
},
|
||||
|
@ -1,5 +1,6 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:jiffy/jiffy.dart';
|
||||
import 'package:marianum_mobile/model/timetable/endpointData.dart';
|
||||
import 'package:persistent_bottom_nav_bar/persistent_tab_view.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
@ -48,7 +49,7 @@ class _ChatTileState extends State<ChatTile> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
CircleAvatar circleAvatar = CircleAvatar(
|
||||
foregroundImage: widget.data.type == GetRoomResponseObjectConversationType.oneToOne ? Image.network("https://cloud.marianum-fulda.de/avatar/${widget.data.name}/128").image : null,
|
||||
foregroundImage: widget.data.type == GetRoomResponseObjectConversationType.oneToOne ? Image.network("https://${EndpointData().nextcloud().full()}/avatar/${widget.data.name}/128").image : null,
|
||||
backgroundColor: Theme.of(context).primaryColor,
|
||||
foregroundColor: Colors.white,
|
||||
child: widget.data.type == GetRoomResponseObjectConversationType.group ? const Icon(Icons.group) : const Icon(Icons.person),
|
||||
|
@ -1,6 +1,7 @@
|
||||
|
||||
import 'package:async/async.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:marianum_mobile/model/timetable/endpointData.dart';
|
||||
|
||||
import '../../../api/marianumcloud/autocomplete/autocompleteApi.dart';
|
||||
import '../../../api/marianumcloud/autocomplete/autocompleteResponse.dart';
|
||||
@ -62,7 +63,7 @@ class JoinChat extends SearchDelegate<String> {
|
||||
itemBuilder: (context, index) {
|
||||
AutocompleteResponseObject object = snapshot.data!.data[index];
|
||||
CircleAvatar circleAvatar = CircleAvatar(
|
||||
foregroundImage: Image.network("https://cloud.marianum-fulda.de/avatar/${object.id}/128").image,
|
||||
foregroundImage: Image.network("https://${EndpointData().nextcloud().full()}/avatar/${object.id}/128").image,
|
||||
backgroundColor: Theme.of(context).primaryColor,
|
||||
foregroundColor: Colors.white,
|
||||
child: const Icon(Icons.person),
|
||||
|
@ -31,10 +31,15 @@ class _LoadingSpinnerState extends State<LoadingSpinner> {
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
const CircularProgressIndicator(),
|
||||
Visibility(
|
||||
visible: !textVisible,
|
||||
replacement: const Icon(Icons.signal_wifi_connected_no_internet_4_outlined),
|
||||
child: const CircularProgressIndicator(),
|
||||
),
|
||||
const SizedBox(height: 30),
|
||||
Visibility(
|
||||
visible: textVisible,
|
||||
child: const Text("Bist du mit dem Internet verbunden?"),
|
||||
child: const Text("Etwas scheint nicht zu funktionieren!\nBist du mit dem Internet verbunden?\n\nVersuche die App neuzustarten"),
|
||||
),
|
||||
],
|
||||
),
|
||||
|
Reference in New Issue
Block a user