feat: Bring back config.json

This commit is contained in:
Sorunome 2020-12-18 11:43:13 +01:00
parent 30efe4b68a
commit b6a0d372a1
No known key found for this signature in database
GPG Key ID: B19471D07FC9BE9C
7 changed files with 88 additions and 8 deletions

View File

@ -45,6 +45,10 @@ build_windows:
- cd ..; git clone https://github.com/flutter/flutter.git -b dev; $env:path += ";C:\GitLab-Runner\builds\ChristianPauly\flutter\bin"; cd fluffychat-flutter - cd ..; git clone https://github.com/flutter/flutter.git -b dev; $env:path += ";C:\GitLab-Runner\builds\ChristianPauly\flutter\bin"; cd fluffychat-flutter
- flutter doctor - flutter doctor
- flutter config --enable-windows-desktop - flutter config --enable-windows-desktop
- "$package_override = \"`r`ndependency_overrides:`r`n intl: 0.17.0-nullsafety.2\""
- "[System.IO.File]::AppendAllText(\"$CI_PROJECT_DIR/pubspec.yaml\", $package_override, [System.Text.Encoding]::UTF8)"
- flutter clean
- flutter pub get
- flutter build windows - flutter build windows
needs: [] needs: []
artifacts: artifacts:

View File

@ -77,6 +77,11 @@ flutter pub get
flutter build web --release --verbose flutter build web --release --verbose
``` ```
* Optionally configure by serving a `config.json` at the same path as fluffychat.
An example can be found at `config.sample.json`. None of these
values have to exist, the ones stated here are the default ones. If you e.g. only want
to change the default homeserver, then only modify the `default_homeserver` key.
### Desktop (Linux, Windows, macOS) ### Desktop (Linux, Windows, macOS)
* Enable Desktop support in Flutter: https://flutter.dev/desktop * Enable Desktop support in Flutter: https://flutter.dev/desktop

10
config.sample.json Normal file
View File

@ -0,0 +1,10 @@
{
"application_name": "FluffyChat",
"application_welcome_message": null,
"default_homeserver": "matrix.org",
"jitsi_instance": "https://meet.jit.si/",
"privacy_url": "https://fluffychat.im/en/privacy.html",
"render_html": false,
"hide_redacted_events": false,
"hide_unknown_events": false
}

View File

@ -1,11 +1,15 @@
abstract class AppConfig { abstract class AppConfig {
static const String applicationName = 'FluffyChat'; static String _applicationName = 'FluffyChat';
static const String applicationWelcomeMessage = null; static String get applicationName => _applicationName;
static const String defaultHomeserver = 'matrix.org'; static String _applicationWelcomeMessage;
static String get applicationWelcomeMessage => _applicationWelcomeMessage;
static String _defaultHomeserver = 'matrix.org';
static String get defaultHomeserver => _defaultHomeserver;
static String jitsiInstance = 'https://meet.jit.si/'; static String jitsiInstance = 'https://meet.jit.si/';
static const bool allowOtherHomeservers = true; static const bool allowOtherHomeservers = true;
static const bool enableRegistration = true; static const bool enableRegistration = true;
static const String privacyUrl = 'https://fluffychat.im/en/privacy.html'; static String _privacyUrl = 'https://fluffychat.im/en/privacy.html';
static String get privacyUrl => _privacyUrl;
static const String sourceCodeUrl = static const String sourceCodeUrl =
'https://gitlab.com/ChristianPauly/fluffychat-flutter'; 'https://gitlab.com/ChristianPauly/fluffychat-flutter';
static const String supportUrl = static const String supportUrl =
@ -26,4 +30,31 @@ abstract class AppConfig {
static const String pushNotificationsAppId = 'chat.fluffy.fluffychat'; static const String pushNotificationsAppId = 'chat.fluffy.fluffychat';
static const String pushNotificationsGatewayUrl = 'https://janian.de:7023/'; static const String pushNotificationsGatewayUrl = 'https://janian.de:7023/';
static const String pushNotificationsPusherFormat = 'event_id_only'; static const String pushNotificationsPusherFormat = 'event_id_only';
static void loadFromJson(Map<String, dynamic> json) {
if (json['application_name'] is String) {
_applicationName = json['application_name'];
}
if (json['application_welcome_message'] is String) {
_applicationWelcomeMessage = json['application_welcome_message'];
}
if (json['default_homeserver'] is String) {
_defaultHomeserver = json['default_homeserver'];
}
if (json['jitsi_instance'] is String) {
jitsiInstance = json['jitsi_instance'];
}
if (json['privacy_url'] is String) {
_privacyUrl = json['privacy_url'];
}
if (json['render_html'] is bool) {
renderHtml = json['render_html'];
}
if (json['hide_redacted_events'] is bool) {
hideRedactedEvents = json['hide_redacted_events'];
}
if (json['hide_unknown_events'] is bool) {
hideUnknownEvents = json['hide_unknown_events'];
}
}
} }

View File

@ -1,5 +1,6 @@
import 'dart:async'; import 'dart:async';
import 'dart:io'; import 'dart:io';
import 'dart:convert';
import 'package:adaptive_dialog/adaptive_dialog.dart'; import 'package:adaptive_dialog/adaptive_dialog.dart';
import 'package:famedlysdk/encryption.dart'; import 'package:famedlysdk/encryption.dart';
@ -16,6 +17,8 @@ import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart';
import 'package:universal_html/prefer_universal/html.dart' as html; import 'package:universal_html/prefer_universal/html.dart' as html;
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
import 'package:path_provider/path_provider.dart';
import 'package:http/http.dart' as http;
/*import 'package:fluffychat/views/chat.dart'; /*import 'package:fluffychat/views/chat.dart';
import 'package:fluffychat/app_config.dart'; import 'package:fluffychat/app_config.dart';
import 'package:dbus/dbus.dart'; import 'package:dbus/dbus.dart';
@ -275,6 +278,33 @@ class MatrixState extends State<Matrix> {
void initState() { void initState() {
super.initState(); super.initState();
initMatrix(); initMatrix();
initConfig().then((_) => initSettings());
}
Future<void> initConfig() async {
if (PlatformInfos.isMobile) {
return;
}
try {
var configJsonString = '';
if (PlatformInfos.isWeb) {
configJsonString =
utf8.decode((await http.get('config.json')).bodyBytes);
} else if (PlatformInfos.isBetaDesktop) {
final appDocDir = await getApplicationSupportDirectory();
configJsonString =
await File('${appDocDir.path}/config.json').readAsString();
} else {
final appDocDir = await getApplicationDocumentsDirectory();
configJsonString =
await File('${appDocDir.path}/config.json').readAsString();
}
final configJson = json.decode(configJsonString);
AppConfig.loadFromJson(configJson);
} catch (error) {
debugPrint(
'[ConfigLoader] Failed to load config.json: ' + error.toString());
}
} }
void initMatrix() { void initMatrix() {
@ -369,7 +399,6 @@ class MatrixState extends State<Matrix> {
.listen(_showLocalNotification); .listen(_showLocalNotification);
}); });
} }
initSettings();
} }
void initSettings() { void initSettings() {

View File

@ -2,6 +2,7 @@
flutter channel dev flutter channel dev
flutter upgrade flutter upgrade
flutter config --enable-linux-desktop flutter config --enable-linux-desktop
echo "dependency_overrides:\n intl: 0.17.0-nullsafety.2" >> pubspec.yaml
flutter clean flutter clean
flutter pub get flutter pub get
flutter build linux --release -v flutter build linux --release -v

View File

@ -1,6 +1,6 @@
#!/bin/sh -ve #!/bin/sh -ve
flutter channel beta #flutter channel beta
flutter upgrade #flutter upgrade
flutter config --enable-web flutter config --enable-web
flutter clean flutter clean
flutter pub get flutter pub get