Clean up util code and github action

This commit is contained in:
John Wesley 2024-01-04 15:00:20 -05:00
parent a5da75df6a
commit f339a9035c
5 changed files with 47 additions and 23 deletions

View File

@ -70,13 +70,13 @@ jobs:
- name: Setup Flutter - name: Setup Flutter
uses: subosito/flutter-action@v2 uses: subosito/flutter-action@v2
- name: Install cider
run: dart pub global activate cider
- name: Checkout code - name: Checkout code
uses: actions/checkout@v3 uses: actions/checkout@v3
- name: Set version - 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 - name: Build Flutter app
run: flutter build -v ${{ matrix.build_target }} run: flutter build -v ${{ matrix.build_target }}

View File

@ -212,8 +212,16 @@ class EntryItem extends StatelessWidget {
)); ));
}), }),
onReply: onReply, onReply: onReply,
onEdit: isLoggedInUser(context, item.user.username, onEdit), onEdit: whenLoggedIn(
onDelete: isLoggedInUser(context, item.user.username, onDelete), context,
onEdit,
matchesUsername: item.user.username,
),
onDelete: whenLoggedIn(
context,
onDelete,
matchesUsername: item.user.username,
),
initEdit: () { initEdit: () {
return item.body; return item.body;
}, },

View File

@ -55,21 +55,20 @@ class PostItem extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Column( return Column(
crossAxisAlignment: CrossAxisAlignment.stretch, crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[ children: <Widget>[
if (item.image?.storageUrl != null) if (item.image?.storageUrl != null)
isPreview isPreview
? (InkWell( ? (InkWell(
onTap: () => _onImageClick(context), onTap: () => _onImageClick(context),
child: Image.network( child: Image.network(
item.image!.storageUrl, item.image!.storageUrl,
height: 160, height: 160,
width: double.infinity, width: double.infinity,
fit: BoxFit.cover, fit: BoxFit.cover,
), ),
)) ))
: Container( : Container(
constraints: BoxConstraints( constraints: BoxConstraints(
maxHeight: MediaQuery.of(context).size.height / 2, maxHeight: MediaQuery.of(context).size.height / 2,
@ -163,8 +162,16 @@ class PostItem extends StatelessWidget {
)); ));
}), }),
onReply: onReply, onReply: onReply,
onEdit: isLoggedInUser(context, item.user.username, onEdit), onEdit: whenLoggedIn(
onDelete: isLoggedInUser(context, item.user.username, onDelete), context,
onEdit,
matchesUsername: item.user.username,
),
onDelete: whenLoggedIn(
context,
onDelete,
matchesUsername: item.user.username,
),
initEdit: () { initEdit: () {
return item.body; return item.body;
}, },

View File

@ -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_item.dart';
import 'package:interstellar/src/screens/posts/post_page.dart'; import 'package:interstellar/src/screens/posts/post_page.dart';
import 'package:interstellar/src/screens/settings/settings_controller.dart'; import 'package:interstellar/src/screens/settings/settings_controller.dart';
import 'package:interstellar/src/utils/utils.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
class PostsListView extends StatefulWidget { class PostsListView extends StatefulWidget {

View File

@ -2,7 +2,6 @@ import 'dart:convert';
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
import 'package:http/http.dart' as http; 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:interstellar/src/screens/settings/settings_controller.dart';
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@ -64,9 +63,6 @@ void httpErrorHandler(http.Response response, {String? message}) {
} }
} }
T? whenLoggedIn<T>(BuildContext context, T value, {T? otherwise}) =>
context.read<SettingsController>().isLoggedIn ? value : otherwise;
Map<String, dynamic> removeNulls(Map<String, dynamic> map) { Map<String, dynamic> removeNulls(Map<String, dynamic> map) {
map.forEach((key, value) { map.forEach((key, value) {
if (value == null) { if (value == null) {
@ -76,5 +72,19 @@ Map<String, dynamic> removeNulls(Map<String, dynamic> map) {
return map; return map;
} }
T? isLoggedInUser<T>(BuildContext context, String username, T? value, {T? otherwise}) => T? whenLoggedIn<T>(
context.read<SettingsController>().selectedAccount.split("@").first == username ? value : otherwise; BuildContext context,
T? value, {
String? matchesUsername,
T? otherwise,
}) =>
context.read<SettingsController>().isLoggedIn &&
(matchesUsername == null ||
context
.read<SettingsController>()
.selectedAccount
.split("@")
.first ==
matchesUsername)
? value
: otherwise;