feat: implement some api; add md editor to app; login and signup logic.

This commit is contained in:
2021-12-30 20:04:00 +08:00
parent 1a0e8f8de7
commit 853132f1a8
61 changed files with 3205 additions and 149 deletions
+19 -11
View File
@@ -29,34 +29,42 @@ class H {
initSharedPreference() async {
_sp = await SharedPreferences.getInstance();
}
late BuildContext _topContext;
BuildContext get topContext => _topContext;
initTopContext(BuildContext context) {
_topContext = context;
}
static void openPanel(BuildContext context, PanelType panelType) {
var windowWidth = MediaQuery.of(context).size.width;
if (windowWidth < minWindowSize.width + localManagerPanelWidth + marketPanelWidth) {
if (windowWidth < minWindowSize.width + localManagerPanelWidth + marketOrMePanelWidth) {
context.read<ContentLayoutProvider>().setProps(
localManagerOpened: panelType == PanelType.local_manager,
marketOpened: panelType == PanelType.market,
marketOrMeOpened: panelType == PanelType.market_or_me,
);
} else {
switch (panelType) {
case PanelType.local_manager:
return context.read<ContentLayoutProvider>().setProps(localManagerOpened: true);
case PanelType.market:
return context.read<ContentLayoutProvider>().setProps(marketOpened: true);
case PanelType.market_or_me:
return context.read<ContentLayoutProvider>().setProps(marketOrMeOpened: true);
}
}
}
static PreferredPanelsStatus getPreferredPanelsStatus(double windowWidth) {
var preferredPanelsStatus = PreferredPanelsStatus(localManagerPanelOpened: true, marketPanelOpened: true);
if (windowWidth > minWindowSize.width + localManagerPanelWidth + marketPanelWidth)
var preferredPanelsStatus = PreferredPanelsStatus(localManagerPanelOpened: true, marketOrMePanelOpened: true);
if (windowWidth > minWindowSize.width + localManagerPanelWidth + marketOrMePanelWidth)
return preferredPanelsStatus;
else if (windowWidth < minWindowSize.width + localManagerPanelWidth)
return preferredPanelsStatus
..marketPanelOpened = false
..marketOrMePanelOpened = false
..localManagerPanelOpened = false;
else
return preferredPanelsStatus..marketPanelOpened = false;
return preferredPanelsStatus..marketOrMePanelOpened = false;
}
static Gesture getGestureByName(String gestureName) => Gesture.values.findByName(gestureName) ?? Gesture.swipe;
@@ -108,15 +116,15 @@ class H {
class PreferredPanelsStatus {
bool localManagerPanelOpened;
bool marketPanelOpened;
bool marketOrMePanelOpened;
PreferredPanelsStatus({
required this.localManagerPanelOpened,
required this.marketPanelOpened,
required this.marketOrMePanelOpened,
});
@override
String toString() {
return 'PreferredPanelsStatus{localManagerPanelOpened: $localManagerPanelOpened, marketPanelOpened: $marketPanelOpened}';
return 'PreferredPanelsStatus{localManagerPanelOpened: $localManagerPanelOpened, marketOrMePanelOpened: $marketOrMePanelOpened}';
}
}
+35
View File
@@ -3,13 +3,22 @@ import 'package:dde_gesture_manager/constants/sp_keys.dart';
import 'package:dde_gesture_manager/constants/supported_locales.dart';
import 'package:dde_gesture_manager/extensions.dart';
import 'package:dde_gesture_manager/generated/codegen_loader.g.dart';
import 'package:dde_gesture_manager/http/api.dart';
import 'package:dde_gesture_manager/models/settings.provider.dart';
import 'package:dde_gesture_manager/utils/helper.dart';
import 'package:dde_gesture_manager/utils/notificator.dart';
import 'package:dde_gesture_manager_api/apis.dart';
import 'package:flutter/material.dart';
import 'package:flutter_platform_alert/flutter_platform_alert.dart';
import 'package:gsettings/gsettings.dart';
import 'package:package_info_plus/package_info_plus.dart';
import 'package:url_launcher/url_launcher.dart';
import 'package:window_manager/window_manager.dart';
bool _updateChecked = false;
Future<void> initEvents(BuildContext context) async {
H().initTopContext(context);
var isDark = MediaQuery.of(context).platformBrightness == Brightness.dark;
if (isDark) {
context.read<SettingsProvider>().setProps(isDarkMode: isDark);
@@ -39,6 +48,32 @@ Future<void> initEvents(BuildContext context) async {
});
}
}
if (!_updateChecked)
Api.checkAppVersion(ignoreErrorHandle: true).then((value) async {
_updateChecked = true;
var info = await PackageInfo.fromPlatform();
var _buildNumber = int.parse(info.buildNumber);
var _newVersionCode = value?.versionCode ?? 0;
var _ignoredVersionCode = H().sp.getInt(SPKeys.ignoredUpdateVersion) ?? 0;
if (_buildNumber < _newVersionCode && _ignoredVersionCode < _newVersionCode) {
Notificator.showConfirm(
title: LocaleKeys.info_new_version_title.tr(namedArgs: {'version': '${value?.versionName}'}),
description: LocaleKeys.info_new_version_description_for_startup.tr(namedArgs: {
'yes': LocaleKeys.str_yes.tr(),
'no': LocaleKeys.str_no.tr(),
}),
).then((confirmed) async {
if (confirmed == CustomButton.positiveButton) {
if (await canLaunch(Apis.appNewVersionUrl)) {
await launch(Apis.appNewVersionUrl);
}
} else if (confirmed == CustomButton.negativeButton) {
H().sp.updateInt(SPKeys.ignoredUpdateVersion, value?.versionCode ?? 0);
}
});
}
});
}
Future<void> initConfigs() async {
+1
View File
@@ -4,6 +4,7 @@ import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
Future<void> initEvents(BuildContext context) async {
H().initTopContext(context);
var isDark = MediaQuery.of(context).platformBrightness == Brightness.dark;
context.read<SettingsProvider>().setProps(isDarkMode: isDark);
}
+3 -2
View File
@@ -1,5 +1,6 @@
import 'package:cherry_toast/cherry_toast.dart';
import 'package:cherry_toast/resources/arrays.dart';
import 'package:dde_gesture_manager/extensions.dart';
import 'package:flutter/material.dart';
import 'package:flutter_platform_alert/flutter_platform_alert.dart';
@@ -27,8 +28,8 @@ class Notificator {
return AlertImpl().showConfirm(
windowTitle: title,
text: description,
positiveButtonTitle: positiveButtonTitle,
negativeButtonTitle: negativeButtonTitle,
positiveButtonTitle: positiveButtonTitle ?? LocaleKeys.str_yes.tr(),
negativeButtonTitle: negativeButtonTitle ?? LocaleKeys.str_no.tr(),
);
}