Skip to content

Commit

Permalink
強制アップデートのテスト追加
Browse files Browse the repository at this point in the history
  • Loading branch information
narunblog committed Jul 23, 2023
1 parent 947cacb commit 4c40780
Show file tree
Hide file tree
Showing 3 changed files with 529 additions and 37 deletions.
85 changes: 48 additions & 37 deletions packages/mottai_flutter_app/lib/force_update/force_update.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import 'dart:io';

import 'package:firebase_common/firebase_common.dart';
import 'package:flutter/foundation.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';

import '../firestore_repository.dart';
Expand All @@ -12,53 +13,63 @@ final forceUpdateFutureProvider =
return repository.subscribeForceUpdateConfig();
});

final isForceUpdateProvider = Provider.autoDispose<bool>(
final isIOSProvider = Provider.autoDispose<bool>((_) => Platform.isIOS);

final appVersionProvider = Provider.autoDispose<int>(
(ref) => _formatVersionNumber(ref.watch(packageInfoProvider).version),
);

final isForceUpdateProvider = StateProvider.autoDispose<bool>(
(ref) {
final forceUpdateInfo = ref.watch(forceUpdateFutureProvider).asData?.value;

// 読み込みが終わっていない場合またはエラーの場合
if (forceUpdateInfo == null) {
return false;
} else {
final packageInfo = ref.watch(packageInfoProvider);
final isIOS = Platform.isIOS;
final version = _formatVersionNumber(packageInfo.version);
// iOSの時
if (isIOS) {
// 強制アップデート
if (forceUpdateInfo.iOSForceUpdate) {
return true;
} else {
// バージョンが範囲内になければアップデート
final iOSLatestVersion =
_formatVersionNumber(forceUpdateInfo.iOSLatestVersion);
final iOSMinRequiredVersion =
_formatVersionNumber(forceUpdateInfo.iOSMinRequiredVersion);
if (iOSMinRequiredVersion <= version && version <= iOSLatestVersion) {
return false;
} else {
try {
// 読み込みが終わっていない場合またはエラーの場合
if (forceUpdateInfo == null) {
return false;
} else {
final version = ref.watch(appVersionProvider);
// iOSの時
if (ref.watch(isIOSProvider)) {
// 強制アップデート
if (forceUpdateInfo.iOSForceUpdate) {
return true;
} else {
// バージョンが範囲内になければアップデート
final iOSLatestVersion =
_formatVersionNumber(forceUpdateInfo.iOSLatestVersion);
final iOSMinRequiredVersion =
_formatVersionNumber(forceUpdateInfo.iOSMinRequiredVersion);
if (iOSMinRequiredVersion <= version &&
version <= iOSLatestVersion) {
return false;
} else {
return true;
}
}
}
// Androidの時
} else {
// 強制アップデート
if (forceUpdateInfo.androidForceUpdate) {
return true;
// Androidの時
} else {
// バージョンが範囲内になければアップデート
final androidLatestVersion =
_formatVersionNumber(forceUpdateInfo.androidLatestVersion);
final androidMinRequiredVersion =
_formatVersionNumber(forceUpdateInfo.androidMinRequiredVersion);
if (androidMinRequiredVersion <= version &&
version <= androidLatestVersion) {
return false;
} else {
// 強制アップデート
if (forceUpdateInfo.androidForceUpdate) {
return true;
} else {
// バージョンが範囲内になければアップデート
final androidLatestVersion =
_formatVersionNumber(forceUpdateInfo.androidLatestVersion);
final androidMinRequiredVersion =
_formatVersionNumber(forceUpdateInfo.androidMinRequiredVersion);
if (androidMinRequiredVersion <= version &&
version <= androidLatestVersion) {
return false;
} else {
return true;
}
}
}
}
} on FormatException catch (e) {
debugPrint(e.toString());
return false;
}
},
);
Expand Down
Loading

0 comments on commit 4c40780

Please sign in to comment.