🐛 Bug fixes

This commit is contained in:
LittleSheep 2024-09-22 22:56:28 +08:00
parent 6cde218393
commit 4b921602a2
8 changed files with 446 additions and 412 deletions

View File

@ -433,6 +433,7 @@
"updateCheckStrictly": "Strict mode", "updateCheckStrictly": "Strict mode",
"updateCheckStrictlyDesc": "If enabled, the app will ask for updating once the local version is different from remote one.", "updateCheckStrictlyDesc": "If enabled, the app will ask for updating once the local version is different from remote one.",
"updateMayAvailable": "App version @version is available, you can update from app store or our website.", "updateMayAvailable": "App version @version is available, you can update from app store or our website.",
"updateNow": "Update now",
"termAccept": "I've read and agree to Solar Network's Terms", "termAccept": "I've read and agree to Solar Network's Terms",
"termAcceptDesc": "Including but not limited to \"User Agreement\" and \"Privacy Policy\"", "termAcceptDesc": "Including but not limited to \"User Agreement\" and \"Privacy Policy\"",
"termAcceptLink": "View terms", "termAcceptLink": "View terms",

View File

@ -428,6 +428,7 @@
"update": "更新", "update": "更新",
"updateCheckStrictly": "严格模式", "updateCheckStrictly": "严格模式",
"updateCheckStrictlyDesc": "如果启用,应用程序将会在本地版本与远程版本不同时询问更新,而不会检查版本号大小。", "updateCheckStrictlyDesc": "如果启用,应用程序将会在本地版本与远程版本不同时询问更新,而不会检查版本号大小。",
"updateNow": "立即更新",
"updateMayAvailable": "版本 @version 现已可用,你可以前往应用商店或是我们的官网下载更新。", "updateMayAvailable": "版本 @version 现已可用,你可以前往应用商店或是我们的官网下载更新。",
"termAccept": "我已阅读并同意 Solar Network 各项条款", "termAccept": "我已阅读并同意 Solar Network 各项条款",
"termAcceptDesc": "包括但不限于《用户守则》和《隐私政策》", "termAcceptDesc": "包括但不限于《用户守则》和《隐私政策》",

View File

@ -42,6 +42,28 @@ class _BootstrapperShellState extends State<BootstrapperShell> {
final Completer _bootCompleter = Completer(); final Completer _bootCompleter = Completer();
void _updateNow(String localVersionString, String remoteVersionString) {
context
.showConfirmDialog(
'updateAvailable'.tr,
'updateAvailableDesc'.trParams({
'from': localVersionString,
'to': remoteVersionString,
}),
)
.then((result) {
if (result) {
final model = UpdateModel(
'https://files.solsynth.dev/d/production01/solian/app-arm64-v8a-release.apk',
'solian-app-arm64-v8a-release.apk',
'ic_launcher',
'https://testflight.apple.com/join/YJ0lmN6O',
);
AzhonAppUpdate.update(model);
}
});
}
Future<void> _checkForUpdate() async { Future<void> _checkForUpdate() async {
if (PlatformInfo.isWeb) return; if (PlatformInfo.isWeb) return;
try { try {
@ -70,25 +92,7 @@ class _BootstrapperShellState extends State<BootstrapperShell> {
remoteBuildNumber > localBuildNumber) || remoteBuildNumber > localBuildNumber) ||
(remoteVersionString != localVersionString && strictUpdate)) { (remoteVersionString != localVersionString && strictUpdate)) {
if (PlatformInfo.isAndroid) { if (PlatformInfo.isAndroid) {
context _updateNow(localVersionString, remoteVersionString);
.showConfirmDialog(
'updateAvailable'.tr,
'updateAvailableDesc'.trParams({
'from': localVersionString,
'to': remoteVersionString,
}),
)
.then((result) {
if (result) {
final model = UpdateModel(
'https://files.solsynth.dev/d/production01/solian/app-arm64-v8a-release.apk',
'solian-app-arm64-v8a-release.apk',
'ic_launcher',
'https://testflight.apple.com/join/YJ0lmN6O',
);
AzhonAppUpdate.update(model);
}
});
} else { } else {
context.showInfoDialog( context.showInfoDialog(
'updateAvailable'.tr, 'updateAvailable'.tr,
@ -97,9 +101,19 @@ class _BootstrapperShellState extends State<BootstrapperShell> {
} }
} else if (remoteVersionString != localVersionString) { } else if (remoteVersionString != localVersionString) {
_bootCompleter.future.then((_) { _bootCompleter.future.then((_) {
context.showSnackbar('updateMayAvailable'.trParams({ context.showSnackbar(
'updateMayAvailable'.trParams({
'version': remoteVersionString, 'version': remoteVersionString,
})); }),
action: PlatformInfo.isAndroid
? SnackBarAction(
label: 'updateNow'.tr,
onPressed: () {
_updateNow(localVersionString, remoteVersionString);
},
)
: null,
);
}); });
} }
} catch (e) { } catch (e) {

View File

@ -193,7 +193,9 @@ class _AccountProfilePageState extends State<AccountProfilePage> {
toolbarHeight: AppTheme.toolbarHeight(context), toolbarHeight: AppTheme.toolbarHeight(context),
leadingWidth: 24, leadingWidth: 24,
automaticallyImplyLeading: false, automaticallyImplyLeading: false,
flexibleSpace: Row( flexibleSpace: SizedBox(
height: 56,
child: Row(
children: [ children: [
AppBarLeadingButton.adaptive(context) ?? const Gap(8), AppBarLeadingButton.adaptive(context) ?? const Gap(8),
const Gap(8), const Gap(8),
@ -283,6 +285,7 @@ class _AccountProfilePageState extends State<AccountProfilePage> {
), ),
], ],
), ),
).paddingOnly(top: MediaQuery.of(context).padding.top),
bottom: TabBar( bottom: TabBar(
tabs: [ tabs: [
Tab(text: 'profilePage'.tr), Tab(text: 'profilePage'.tr),
@ -296,10 +299,11 @@ class _AccountProfilePageState extends State<AccountProfilePage> {
body: TabBarView( body: TabBarView(
physics: const NeverScrollableScrollPhysics(), physics: const NeverScrollableScrollPhysics(),
children: [ children: [
Column( ListView(
children: [ children: [
const Gap(16), const Gap(16),
AccountHeadingWidget( CenteredContainer(
child: AccountHeadingWidget(
name: _userinfo!.name, name: _userinfo!.name,
nick: _userinfo!.nick, nick: _userinfo!.nick,
desc: _userinfo!.description, desc: _userinfo!.description,
@ -315,7 +319,8 @@ class _AccountProfilePageState extends State<AccountProfilePage> {
Card( Card(
child: SizedBox( child: SizedBox(
height: 180, height: 180,
width: max(640, MediaQuery.of(context).size.width), width:
max(640, MediaQuery.of(context).size.width),
child: LineChart( child: LineChart(
LineChartData( LineChartData(
lineBarsData: [ lineBarsData: [
@ -415,10 +420,12 @@ class _AccountProfilePageState extends State<AccountProfilePage> {
borderData: FlBorderData(show: false), borderData: FlBorderData(show: false),
), ),
), ),
).marginOnly(right: 24, left: 12, bottom: 8, top: 24), ).marginOnly(
right: 24, left: 12, bottom: 8, top: 24),
) )
], ],
), ),
),
], ],
), ),
RefreshIndicator( RefreshIndicator(

View File

@ -21,6 +21,7 @@ class AttachmentItem extends StatefulWidget {
final bool showBadge; final bool showBadge;
final bool showHideButton; final bool showHideButton;
final bool autoload; final bool autoload;
final bool isDense;
final BoxFit fit; final BoxFit fit;
final String? badge; final String? badge;
final Function? onHide; final Function? onHide;
@ -34,6 +35,7 @@ class AttachmentItem extends StatefulWidget {
this.showBadge = true, this.showBadge = true,
this.showHideButton = true, this.showHideButton = true,
this.autoload = false, this.autoload = false,
this.isDense = false,
this.onHide, this.onHide,
}); });
@ -53,6 +55,7 @@ class _AttachmentItemState extends State<AttachmentItem> {
fit: widget.fit, fit: widget.fit,
showBadge: widget.showBadge, showBadge: widget.showBadge,
showHideButton: widget.showHideButton, showHideButton: widget.showHideButton,
isDense: widget.isDense,
onHide: widget.onHide, onHide: widget.onHide,
); );
case 'video': case 'video':
@ -120,6 +123,7 @@ class _AttachmentItemImage extends StatelessWidget {
final bool showBadge; final bool showBadge;
final bool showHideButton; final bool showHideButton;
final BoxFit fit; final BoxFit fit;
final bool isDense;
final String? badge; final String? badge;
final Function? onHide; final Function? onHide;
@ -128,6 +132,7 @@ class _AttachmentItemImage extends StatelessWidget {
required this.item, required this.item,
required this.showBadge, required this.showBadge,
required this.showHideButton, required this.showHideButton,
required this.isDense,
required this.fit, required this.fit,
this.badge, this.badge,
this.onHide, this.onHide,
@ -146,6 +151,7 @@ class _AttachmentItemImage extends StatelessWidget {
'/attachments/${item.rid}', '/attachments/${item.rid}',
), ),
fit: fit, fit: fit,
isDense: isDense,
), ),
if (showBadge && badge != null) if (showBadge && badge != null)
Positioned( Positioned(

View File

@ -338,6 +338,7 @@ class AttachmentListEntry extends StatelessWidget {
badge: showBadge ? badgeContent : null, badge: showBadge ? badgeContent : null,
showHideButton: !item!.isMature || showMature, showHideButton: !item!.isMature || showMature,
autoload: autoload, autoload: autoload,
isDense: isDense,
onHide: () { onHide: () {
onReveal(false); onReveal(false);
}, },

View File

@ -42,9 +42,10 @@ class DailySignHistoryChartDialog extends StatelessWidget {
child: CircularProgressIndicator(), child: CircularProgressIndicator(),
), ),
) )
: Column( : SizedBox(
mainAxisSize: MainAxisSize.min, width: double.maxFinite,
crossAxisAlignment: CrossAxisAlignment.start, child: ListView(
shrinkWrap: true,
children: [ children: [
Text( Text(
'dailySignHistoryRecent'.tr, 'dailySignHistoryRecent'.tr,
@ -204,13 +205,15 @@ class DailySignHistoryChartDialog extends StatelessWidget {
.map((spot) => LineTooltipItem( .map((spot) => LineTooltipItem(
'+${spot.y.toStringAsFixed(0)} EXP\n${DateFormat('MM/dd').format(DateTime.fromMillisecondsSinceEpoch(spot.x.toInt()))}', '+${spot.y.toStringAsFixed(0)} EXP\n${DateFormat('MM/dd').format(DateTime.fromMillisecondsSinceEpoch(spot.x.toInt()))}',
TextStyle( TextStyle(
color: color: Theme.of(context)
Theme.of(context).colorScheme.onSurface, .colorScheme
.onSurface,
), ),
)) ))
.toList(), .toList(),
getTooltipColor: (_) => getTooltipColor: (_) => Theme.of(context)
Theme.of(context).colorScheme.surfaceContainerHigh, .colorScheme
.surfaceContainerHigh,
)), )),
titlesData: FlTitlesData( titlesData: FlTitlesData(
topTitles: const AxisTitles( topTitles: const AxisTitles(
@ -255,6 +258,7 @@ class DailySignHistoryChartDialog extends StatelessWidget {
).marginOnly(right: 24, bottom: 8, top: 8), ).marginOnly(right: 24, bottom: 8, top: 8),
], ],
), ),
),
); );
} }
} }

View File

@ -2,7 +2,7 @@ name: solian
description: "The Solar Network App" description: "The Solar Network App"
publish_to: "none" publish_to: "none"
version: 1.2.2+3 version: 1.2.3+1
environment: environment:
sdk: ">=3.3.4 <4.0.0" sdk: ">=3.3.4 <4.0.0"