From f339a9035cc0d0a496fec5e8365e577ba989287e Mon Sep 17 00:00:00 2001 From: John Wesley Date: Thu, 4 Jan 2024 15:00:20 -0500 Subject: [PATCH] Clean up util code and github action --- .github/workflows/build_release.yml | 6 ++--- lib/src/screens/entries/entry_item.dart | 12 ++++++++-- lib/src/screens/posts/post_item.dart | 29 +++++++++++++++---------- lib/src/screens/posts/posts_list.dart | 1 - lib/src/utils/utils.dart | 22 ++++++++++++++----- 5 files changed, 47 insertions(+), 23 deletions(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index 55a8afb..7967bfd 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -70,13 +70,13 @@ jobs: - name: Setup Flutter uses: subosito/flutter-action@v2 - - name: Install cider - run: dart pub global activate cider - name: Checkout code uses: actions/checkout@v3 - name: Set version - run: cider version ${{ github.event.inputs.version }} + run: | + dart pub global activate cider + cider version ${{ github.event.inputs.version }} - name: Build Flutter app run: flutter build -v ${{ matrix.build_target }} diff --git a/lib/src/screens/entries/entry_item.dart b/lib/src/screens/entries/entry_item.dart index f2321ef..905de22 100644 --- a/lib/src/screens/entries/entry_item.dart +++ b/lib/src/screens/entries/entry_item.dart @@ -212,8 +212,16 @@ class EntryItem extends StatelessWidget { )); }), onReply: onReply, - onEdit: isLoggedInUser(context, item.user.username, onEdit), - onDelete: isLoggedInUser(context, item.user.username, onDelete), + onEdit: whenLoggedIn( + context, + onEdit, + matchesUsername: item.user.username, + ), + onDelete: whenLoggedIn( + context, + onDelete, + matchesUsername: item.user.username, + ), initEdit: () { return item.body; }, diff --git a/lib/src/screens/posts/post_item.dart b/lib/src/screens/posts/post_item.dart index d0a11c2..9d11dfe 100644 --- a/lib/src/screens/posts/post_item.dart +++ b/lib/src/screens/posts/post_item.dart @@ -55,21 +55,20 @@ class PostItem extends StatelessWidget { @override Widget build(BuildContext context) { - return Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ if (item.image?.storageUrl != null) isPreview ? (InkWell( - onTap: () => _onImageClick(context), - child: Image.network( - item.image!.storageUrl, - height: 160, - width: double.infinity, - fit: BoxFit.cover, - ), - )) + onTap: () => _onImageClick(context), + child: Image.network( + item.image!.storageUrl, + height: 160, + width: double.infinity, + fit: BoxFit.cover, + ), + )) : Container( constraints: BoxConstraints( maxHeight: MediaQuery.of(context).size.height / 2, @@ -163,8 +162,16 @@ class PostItem extends StatelessWidget { )); }), onReply: onReply, - onEdit: isLoggedInUser(context, item.user.username, onEdit), - onDelete: isLoggedInUser(context, item.user.username, onDelete), + onEdit: whenLoggedIn( + context, + onEdit, + matchesUsername: item.user.username, + ), + onDelete: whenLoggedIn( + context, + onDelete, + matchesUsername: item.user.username, + ), initEdit: () { return item.body; }, diff --git a/lib/src/screens/posts/posts_list.dart b/lib/src/screens/posts/posts_list.dart index d520e77..897bdd5 100644 --- a/lib/src/screens/posts/posts_list.dart +++ b/lib/src/screens/posts/posts_list.dart @@ -5,7 +5,6 @@ import 'package:interstellar/src/api/posts.dart' as api_posts; import 'package:interstellar/src/screens/posts/post_item.dart'; import 'package:interstellar/src/screens/posts/post_page.dart'; import 'package:interstellar/src/screens/settings/settings_controller.dart'; -import 'package:interstellar/src/utils/utils.dart'; import 'package:provider/provider.dart'; class PostsListView extends StatefulWidget { diff --git a/lib/src/utils/utils.dart b/lib/src/utils/utils.dart index e151b5c..e8f3850 100644 --- a/lib/src/utils/utils.dart +++ b/lib/src/utils/utils.dart @@ -2,7 +2,6 @@ import 'dart:convert'; import 'package:flutter/widgets.dart'; import 'package:http/http.dart' as http; -import 'package:interstellar/src/api/users.dart'; import 'package:interstellar/src/screens/settings/settings_controller.dart'; import 'package:intl/intl.dart'; import 'package:provider/provider.dart'; @@ -64,9 +63,6 @@ void httpErrorHandler(http.Response response, {String? message}) { } } -T? whenLoggedIn(BuildContext context, T value, {T? otherwise}) => - context.read().isLoggedIn ? value : otherwise; - Map removeNulls(Map map) { map.forEach((key, value) { if (value == null) { @@ -76,5 +72,19 @@ Map removeNulls(Map map) { return map; } -T? isLoggedInUser(BuildContext context, String username, T? value, {T? otherwise}) => - context.read().selectedAccount.split("@").first == username ? value : otherwise; +T? whenLoggedIn( + BuildContext context, + T? value, { + String? matchesUsername, + T? otherwise, +}) => + context.read().isLoggedIn && + (matchesUsername == null || + context + .read() + .selectedAccount + .split("@") + .first == + matchesUsername) + ? value + : otherwise;