diff --git a/refilc/lib/api/client.dart b/refilc/lib/api/client.dart index f86428e..83fe55a 100644 --- a/refilc/lib/api/client.dart +++ b/refilc/lib/api/client.dart @@ -336,6 +336,8 @@ class FilcAPI { if (res.statusCode == 200) { return (jsonDecode(res.body) as Map); + } else if (res.statusCode == 404) { + return {"public_id": ""}; } else { throw "HTTP ${res.statusCode}: ${res.body}"; } diff --git a/refilc_kreta_api/lib/providers/share_provider.dart b/refilc_kreta_api/lib/providers/share_provider.dart index e44d3b7..84ee565 100644 --- a/refilc_kreta_api/lib/providers/share_provider.dart +++ b/refilc_kreta_api/lib/providers/share_provider.dart @@ -69,7 +69,25 @@ class ShareProvider extends ChangeNotifier { if (gradeColorsJson != null) { SharedTheme theme = SharedTheme.fromJson( - themeJson, SharedGradeColors.fromJson(gradeColorsJson)); + themeJson, + SharedGradeColors.fromJson(gradeColorsJson["public_id"] != '' + ? gradeColorsJson + : { + "public_id": "0", + "is_public": false, + "nickname": "Anonymous", + "five_color": + SettingsProvider.defaultSettings().gradeColors[4].value, + "four_color": + SettingsProvider.defaultSettings().gradeColors[3].value, + "three_color": + SettingsProvider.defaultSettings().gradeColors[2].value, + "two_color": + SettingsProvider.defaultSettings().gradeColors[1].value, + "one_color": + SettingsProvider.defaultSettings().gradeColors[0].value, + }), + ); return theme; } } @@ -93,7 +111,25 @@ class ShareProvider extends ChangeNotifier { if (gradeColorsJson != null) { SharedTheme theme = SharedTheme.fromJson( - t, SharedGradeColors.fromJson(gradeColorsJson)); + t, + SharedGradeColors.fromJson(gradeColorsJson["public_id"] != '' + ? gradeColorsJson + : { + "public_id": "0", + "is_public": false, + "nickname": "Anonymous", + "five_color": + SettingsProvider.defaultSettings().gradeColors[4].value, + "four_color": + SettingsProvider.defaultSettings().gradeColors[3].value, + "three_color": + SettingsProvider.defaultSettings().gradeColors[2].value, + "two_color": + SettingsProvider.defaultSettings().gradeColors[1].value, + "one_color": + SettingsProvider.defaultSettings().gradeColors[0].value, + }), + ); themes.add(theme); } @@ -134,8 +170,25 @@ class ShareProvider extends ChangeNotifier { Map? gradeColorsJson = await FilcAPI.getSharedGradeColors(id); if (gradeColorsJson != null) { - SharedGradeColors gradeColors = - SharedGradeColors.fromJson(gradeColorsJson); + SharedGradeColors gradeColors = SharedGradeColors.fromJson( + gradeColorsJson["public_id"] != '' + ? gradeColorsJson + : { + "public_id": "0", + "is_public": false, + "nickname": "Anonymous", + "five_color": + SettingsProvider.defaultSettings().gradeColors[4].value, + "four_color": + SettingsProvider.defaultSettings().gradeColors[3].value, + "three_color": + SettingsProvider.defaultSettings().gradeColors[2].value, + "two_color": + SettingsProvider.defaultSettings().gradeColors[1].value, + "one_color": + SettingsProvider.defaultSettings().gradeColors[0].value, + }, + ); return gradeColors; }