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
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 }}

View File

@ -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;
},

View File

@ -55,21 +55,20 @@ class PostItem extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
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;
},

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_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 {

View File

@ -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<T>(BuildContext context, T value, {T? otherwise}) =>
context.read<SettingsController>().isLoggedIn ? value : otherwise;
Map<String, dynamic> removeNulls(Map<String, dynamic> map) {
map.forEach((key, value) {
if (value == null) {
@ -76,5 +72,19 @@ Map<String, dynamic> removeNulls(Map<String, dynamic> map) {
return map;
}
T? isLoggedInUser<T>(BuildContext context, String username, T? value, {T? otherwise}) =>
context.read<SettingsController>().selectedAccount.split("@").first == username ? value : otherwise;
T? whenLoggedIn<T>(
BuildContext context,
T? value, {
String? matchesUsername,
T? otherwise,
}) =>
context.read<SettingsController>().isLoggedIn &&
(matchesUsername == null ||
context
.read<SettingsController>()
.selectedAccount
.split("@")
.first ==
matchesUsername)
? value
: otherwise;