forked from Henry-Hiles/nexus
Refactors
This commit is contained in:
parent
00ab2676b2
commit
5dc8fe14bd
18 changed files with 126 additions and 95 deletions
17
lib/helpers/extensions/better_when.dart
Normal file
17
lib/helpers/extensions/better_when.dart
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
import "package:flutter/widgets.dart";
|
||||
import "package:flutter_riverpod/flutter_riverpod.dart";
|
||||
import "package:nexus/widgets/error_dialog.dart";
|
||||
import "package:nexus/widgets/loading.dart";
|
||||
|
||||
extension BetterWhen<T> on AsyncValue<T> {
|
||||
Widget betterWhen({
|
||||
required Widget Function(T value) data,
|
||||
Widget Function() loading = Loading.new,
|
||||
bool skipLoadingOnRefresh = false,
|
||||
}) => when(
|
||||
data: data,
|
||||
error: (error, stackTrace) => ErrorDialog(error, stackTrace),
|
||||
loading: loading,
|
||||
skipLoadingOnRefresh: skipLoadingOnRefresh,
|
||||
);
|
||||
}
|
||||
13
lib/helpers/extensions/get_full_room.dart
Normal file
13
lib/helpers/extensions/get_full_room.dart
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
import "package:matrix/matrix.dart";
|
||||
import "package:nexus/models/full_room.dart";
|
||||
|
||||
extension GetFullRoom on Room {
|
||||
Future<FullRoom> get fullRoom async {
|
||||
await loadHeroUsers();
|
||||
return FullRoom(
|
||||
roomData: this,
|
||||
title: getLocalizedDisplayname(),
|
||||
avatar: await avatar?.getThumbnailUri(client, width: 24, height: 24),
|
||||
);
|
||||
}
|
||||
}
|
||||
5
lib/helpers/extensions/get_headers.dart
Normal file
5
lib/helpers/extensions/get_headers.dart
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
import "package:matrix/matrix.dart";
|
||||
|
||||
extension GetHeaders on Client {
|
||||
Map<String, String> get headers => {"authorization": "Bearer $accessToken"};
|
||||
}
|
||||
|
|
@ -1,38 +1,5 @@
|
|||
import "package:flutter/material.dart";
|
||||
import "package:flutter_chat_core/flutter_chat_core.dart";
|
||||
import "package:flutter_riverpod/flutter_riverpod.dart";
|
||||
import "package:matrix/matrix.dart";
|
||||
import "package:nexus/models/full_room.dart";
|
||||
import "package:nexus/widgets/error_dialog.dart";
|
||||
import "package:nexus/widgets/loading.dart";
|
||||
|
||||
extension BetterWhen<T> on AsyncValue<T> {
|
||||
Widget betterWhen({
|
||||
required Widget Function(T value) data,
|
||||
Widget Function() loading = Loading.new,
|
||||
bool skipLoadingOnRefresh = false,
|
||||
}) => when(
|
||||
data: data,
|
||||
error: (error, stackTrace) => ErrorDialog(error, stackTrace),
|
||||
loading: loading,
|
||||
skipLoadingOnRefresh: skipLoadingOnRefresh,
|
||||
);
|
||||
}
|
||||
|
||||
extension GetFullRoom on Room {
|
||||
Future<FullRoom> get fullRoom async {
|
||||
await loadHeroUsers();
|
||||
return FullRoom(
|
||||
roomData: this,
|
||||
title: getLocalizedDisplayname(),
|
||||
avatar: await avatar?.getThumbnailUri(client, width: 24, height: 24),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
extension GetHeaders on Client {
|
||||
Map<String, String> get headers => {"authorization": "Bearer $accessToken"};
|
||||
}
|
||||
|
||||
extension ToMessage on Event {
|
||||
Future<Message?> toMessage({bool mustBeText = false}) async {
|
||||
|
|
@ -129,28 +96,3 @@ extension ToMessage on Event {
|
|||
};
|
||||
}
|
||||
}
|
||||
|
||||
extension ToTheme on ColorScheme {
|
||||
ThemeData get theme => ThemeData.from(colorScheme: this).copyWith(
|
||||
cardTheme: CardThemeData(color: primaryContainer),
|
||||
appBarTheme: AppBarTheme(
|
||||
titleSpacing: 0,
|
||||
backgroundColor: surfaceContainerLow,
|
||||
),
|
||||
inputDecorationTheme: const InputDecorationTheme(
|
||||
border: OutlineInputBorder(),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
extension ToMessages on List<MatrixEvent> {
|
||||
Future<List<Message>> toMessages(Room room) async {
|
||||
final messages = await Future.wait(
|
||||
map((event) => Event.fromMatrixEvent(event, room).toMessage()),
|
||||
);
|
||||
|
||||
return {
|
||||
for (var msg in messages.nonNulls.toList().reversed.toList()) msg.id: msg,
|
||||
}.values.toList();
|
||||
}
|
||||
}
|
||||
15
lib/helpers/extensions/to_messages.dart
Normal file
15
lib/helpers/extensions/to_messages.dart
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
import "package:flutter_chat_core/flutter_chat_core.dart";
|
||||
import "package:matrix/matrix.dart";
|
||||
import "package:nexus/helpers/extensions/to_message.dart";
|
||||
|
||||
extension ToMessages on List<MatrixEvent> {
|
||||
Future<List<Message>> toMessages(Room room) async {
|
||||
final messages = await Future.wait(
|
||||
map((event) => Event.fromMatrixEvent(event, room).toMessage()),
|
||||
);
|
||||
|
||||
return {
|
||||
for (var msg in messages.nonNulls.toList().reversed.toList()) msg.id: msg,
|
||||
}.values.toList();
|
||||
}
|
||||
}
|
||||
14
lib/helpers/extensions/to_theme.dart
Normal file
14
lib/helpers/extensions/to_theme.dart
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
import "package:flutter/material.dart";
|
||||
|
||||
extension ToTheme on ColorScheme {
|
||||
ThemeData get theme => ThemeData.from(colorScheme: this).copyWith(
|
||||
cardTheme: CardThemeData(color: primaryContainer),
|
||||
appBarTheme: AppBarTheme(
|
||||
titleSpacing: 0,
|
||||
backgroundColor: surfaceContainerLow,
|
||||
),
|
||||
inputDecorationTheme: const InputDecorationTheme(
|
||||
border: OutlineInputBorder(),
|
||||
),
|
||||
);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue