Skip to content

Commit

Permalink
chore: Tiny fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
codekeyz committed Nov 7, 2024
1 parent ea7cffd commit 30e2832
Show file tree
Hide file tree
Showing 6 changed files with 29 additions and 11 deletions.
21 changes: 14 additions & 7 deletions lib/src/utils/utils.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,25 @@ import 'package:http/http.dart' as http;
import 'package:pharaoh/pharaoh_next.dart';
import 'package:shared/shared.dart';

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

String? resultingImageUrl;

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

return resultingImageUrl;
}
6 changes: 4 additions & 2 deletions packages/frontend/lib/blog/blog_detail.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import 'package:frontend/main.dart';
import 'package:frontend/utils/misc.dart';
import 'package:markdown_widget/markdown_widget.dart';
import 'package:provider/provider.dart';
import 'package:shared/shared.dart';
import 'package:timeago/timeago.dart' as timeago;

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

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

final imageHost = article.imageUrl == null ? null : Uri.tryParse(article.imageUrl!)?.host;
final imageHost = Uri.tryParse(imageUri)?.host;
const spacing = SizedBox(height: 24);

return Column(
Expand Down Expand Up @@ -114,7 +116,7 @@ class BlogDetail extends StatelessWidget {
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Expanded(child: imageView(article.imageUrl!)),
Expanded(child: imageView(imageUri)),
if (imageHost != null) ...[
const SizedBox(height: 8),
Text(imageHost, style: const TextStyle(fontWeight: FontWeight.w300, fontSize: 12)),
Expand Down
5 changes: 4 additions & 1 deletion packages/frontend/lib/data/providers/auth_provider.dart
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,10 @@ class AuthProvider extends BaseProvider<User> {

Future<void> getUser() async {
final user = await safeRun(() => apiSvc.getUser());
if (user == null) return;
if (user == null) {
logout();
return;
}

_setUser(user);
}
Expand Down
3 changes: 3 additions & 0 deletions packages/frontend/lib/utils/misc.dart
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,9 @@ errorView({String? message}) {
imageView(String imageUrl, {double? width, double? height}) => FastCachedImage(
url: imageUrl,
fit: BoxFit.cover,
errorBuilder: (_, error, df) => const Center(
child: Text('An error occurred while loading image'),
),
height: height ?? double.maxFinite,
width: width ?? double.maxFinite,
fadeInDuration: const Duration(seconds: 1),
Expand Down
2 changes: 2 additions & 0 deletions packages/shared/lib/shared.dart
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ enum AppEnvironment {

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

const defaultArticleImage = 'https://images.pexels.com/photos/261763/pexels-photo-261763.jpeg';

bool get isTestMode {
var isDebug = false;
assert(() {
Expand Down
3 changes: 2 additions & 1 deletion test/backend_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import 'dart:io';
import 'package:backend/backend.dart';
import 'package:backend/src/models.dart';
import 'package:shared/models.dart';
import 'package:shared/shared.dart';

import 'package:spookie/spookie.dart';
import '../database/database.dart' as database;
Expand Down Expand Up @@ -267,7 +268,7 @@ void main() {
expect(article.ownerId, currentUser!.id);
expect(article.title, 'Hurry 🚀');
expect(article.description, 'Welcome to the jungle');
expect(article.imageUrl, 'https://dart.dev/assets/shared/dart-logo-for-shares.png');
expect(article.imageUrl, defaultArticleImage);
expect(article.id, isNotNull);
expect(article.createdAt, isNotNull);
expect(article.updatedAt, isNotNull);
Expand Down

0 comments on commit 30e2832

Please sign in to comment.