Skip to content

Commit 30e2832

Browse files
committed
chore: Tiny fixes
1 parent ea7cffd commit 30e2832

File tree

6 files changed

+29
-11
lines changed

6 files changed

+29
-11
lines changed

lib/src/utils/utils.dart

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,25 @@ import 'package:http/http.dart' as http;
66
import 'package:pharaoh/pharaoh_next.dart';
77
import 'package:shared/shared.dart';
88

9-
Future<String?> getRandomImage(String searchText) async {
10-
if (isTestMode) {
11-
return 'https://dart.dev/assets/shared/dart-logo-for-shares.png';
12-
}
9+
Future<String> getRandomImage(String searchText) async {
10+
if (isTestMode) return defaultArticleImage;
11+
12+
String? resultingImageUrl;
1313

1414
try {
1515
final response = await http.get(
1616
Uri.parse('https://api.pexels.com/v1/search?query=$searchText&per_page=1'),
1717
headers: {HttpHeaders.authorizationHeader: env<String>('PEXELS_API_KEY', '')},
1818
).timeout(const Duration(seconds: 2));
1919
final result = await Isolate.run(() => jsonDecode(response.body)) as Map;
20-
return result['photos'][0]['src']['medium'];
21-
} catch (_) {}
22-
return null;
20+
resultingImageUrl = result['photos'][0]['src']['medium'];
21+
} catch (error, trace) {
22+
stderr.writeln('An error occurred while getting image for $searchText');
23+
stderr.writeln('Error $error');
24+
stderr.writeln('Trace $trace');
25+
} finally {
26+
resultingImageUrl ??= defaultArticleImage;
27+
}
28+
29+
return resultingImageUrl;
2330
}

packages/frontend/lib/blog/blog_detail.dart

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import 'package:frontend/main.dart';
55
import 'package:frontend/utils/misc.dart';
66
import 'package:markdown_widget/markdown_widget.dart';
77
import 'package:provider/provider.dart';
8+
import 'package:shared/shared.dart';
89
import 'package:timeago/timeago.dart' as timeago;
910

1011
import 'widgets/article_base_layout.dart';
@@ -34,8 +35,9 @@ class BlogDetail extends StatelessWidget {
3435

3536
const footerStyle = TextStyle(fontSize: 12, fontWeight: FontWeight.w300);
3637
final isPostOwner = currentUser != null && owner != null && currentUser.id == owner.id;
38+
final imageUri = article.imageUrl ?? defaultArticleImage;
3739

38-
final imageHost = article.imageUrl == null ? null : Uri.tryParse(article.imageUrl!)?.host;
40+
final imageHost = Uri.tryParse(imageUri)?.host;
3941
const spacing = SizedBox(height: 24);
4042

4143
return Column(
@@ -114,7 +116,7 @@ class BlogDetail extends StatelessWidget {
114116
child: Column(
115117
mainAxisSize: MainAxisSize.min,
116118
children: [
117-
Expanded(child: imageView(article.imageUrl!)),
119+
Expanded(child: imageView(imageUri)),
118120
if (imageHost != null) ...[
119121
const SizedBox(height: 8),
120122
Text(imageHost, style: const TextStyle(fontWeight: FontWeight.w300, fontSize: 12)),

packages/frontend/lib/data/providers/auth_provider.dart

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,10 @@ class AuthProvider extends BaseProvider<User> {
2323

2424
Future<void> getUser() async {
2525
final user = await safeRun(() => apiSvc.getUser());
26-
if (user == null) return;
26+
if (user == null) {
27+
logout();
28+
return;
29+
}
2730

2831
_setUser(user);
2932
}

packages/frontend/lib/utils/misc.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ errorView({String? message}) {
5959
imageView(String imageUrl, {double? width, double? height}) => FastCachedImage(
6060
url: imageUrl,
6161
fit: BoxFit.cover,
62+
errorBuilder: (_, error, df) => const Center(
63+
child: Text('An error occurred while loading image'),
64+
),
6265
height: height ?? double.maxFinite,
6366
width: width ?? double.maxFinite,
6467
fadeInDuration: const Duration(seconds: 1),

packages/shared/lib/shared.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ enum AppEnvironment {
1818

1919
final isDebugMode = const bool.fromEnvironment("dart.vm.product") == false;
2020

21+
const defaultArticleImage = 'https://images.pexels.com/photos/261763/pexels-photo-261763.jpeg';
22+
2123
bool get isTestMode {
2224
var isDebug = false;
2325
assert(() {

test/backend_test.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import 'dart:io';
44
import 'package:backend/backend.dart';
55
import 'package:backend/src/models.dart';
66
import 'package:shared/models.dart';
7+
import 'package:shared/shared.dart';
78

89
import 'package:spookie/spookie.dart';
910
import '../database/database.dart' as database;
@@ -267,7 +268,7 @@ void main() {
267268
expect(article.ownerId, currentUser!.id);
268269
expect(article.title, 'Hurry 🚀');
269270
expect(article.description, 'Welcome to the jungle');
270-
expect(article.imageUrl, 'https://dart.dev/assets/shared/dart-logo-for-shares.png');
271+
expect(article.imageUrl, defaultArticleImage);
271272
expect(article.id, isNotNull);
272273
expect(article.createdAt, isNotNull);
273274
expect(article.updatedAt, isNotNull);

0 commit comments

Comments
 (0)