Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ class AppFlowyCloudViewSetting extends StatelessWidget {
snapshot.connectionState == ConnectionState.done) {
return snapshot.data!.fold(
(setting) => _renderContent(context, setting),
(err) => FlowyErrorPage.message(err.toString(), howToFix: ""),
(err) => _cloudConfigErrorPage(err),
);
}

Expand Down Expand Up @@ -113,7 +113,7 @@ class CustomAppFlowyCloudView extends StatelessWidget {
snapshot.connectionState == ConnectionState.done) {
return snapshot.data!.fold(
(setting) => _renderContent(setting),
(err) => FlowyErrorPage.message(err.toString(), howToFix: ""),
(err) => _cloudConfigErrorPage(err),
);
} else {
return const Center(
Expand Down Expand Up @@ -161,6 +161,31 @@ class CustomAppFlowyCloudView extends StatelessWidget {
}
}

FlowyErrorPage _cloudConfigErrorPage(FlowyError err) {
Log.error('Failed to load cloud config: ${err.msg}');

final isNetworkError = _looksLikeNetworkError(err);
return FlowyErrorPage.message(
isNetworkError
? LocaleKeys.newSettings_syncState_noNetworkConnected.tr()
: LocaleKeys.error_syncError.tr(),
howToFix: isNetworkError
? LocaleKeys.error_loadingViewError.tr()
: LocaleKeys.error_syncErrorHint.tr(),
);
}

bool _looksLikeNetworkError(FlowyError err) {
final message = err.msg.toLowerCase();
return message.contains('network') ||
message.contains('socket') ||
message.contains('connection') ||
message.contains('timeout') ||
message.contains('timed out') ||
message.contains('unavailable') ||
message.contains('dns');
}

class AppFlowyCloudURLs extends StatelessWidget {
const AppFlowyCloudURLs({super.key, required this.restartAppFlowy});

Expand Down
Loading