Watch
1
0
Fork
You've already forked nexus
0
forked from Nexus/nexus

Merge remote-tracking branch 'origin/main' into custom_emoji_picker_stickers_and_more

This commit is contained in:
istalri 2026-07-27 20:17:15 +02:00
commit 49b94a2e34
24 changed files with 175 additions and 249 deletions

View file

@ -18,6 +18,7 @@ import "package:nexus/models/content/message.dart";
import "package:nexus/models/event.dart";
import "package:nexus/models/oauth_auth_code_response.dart";
import "package:nexus/models/paginate.dart";
import "package:nexus/models/requests/download_media.dart";
import "package:nexus/models/requests/get_event.dart";
import "package:nexus/models/requests/get_related_events.dart";
import "package:nexus/models/requests/get_room_state.dart";
@ -271,6 +272,9 @@ class ClientController extends AsyncNotifier<int> {
Future<MessageContent> uploadMedia(UploadMediaRequest request) async =>
.fromJson(await _sendCommand("upload_media", request.toJson()));
Future<File> downloadMedia(DownloadMediaRequest request) async =>
.new((await _sendCommand("download_media", request.toJson()))["path"]);
Future<void> logout() => _sendCommand("logout");
Future<void> markRead(Room room) async {

View file

@ -1,11 +0,0 @@
import "package:cross_cache/cross_cache.dart";
import "package:flutter_riverpod/flutter_riverpod.dart";
class CrossCacheController extends Notifier<CrossCache> {
@override
CrossCache build() => .new();
static final provider = NotifierProvider<CrossCacheController, CrossCache>(
CrossCacheController.new,
);
}

View file

@ -121,9 +121,16 @@ class RoomChatController extends AsyncNotifier<IList<Event>?> {
required RelationType relationType,
Event? relation,
}) async {
final attachment = ref.watch(AttachmentController.provider(roomId));
Content? baseContent;
if (relationType == .edit) {
baseContent = relation?.content;
} else {
final attachment = ref.watch(AttachmentController.provider(roomId));
if (attachment != null && attachment.$2 == null) return;
if (attachment != null && attachment.$2 == null) return;
baseContent = attachment?.$2;
ref.invalidate(AttachmentController.provider(roomId));
}
var taggedMessage = text;
@ -141,7 +148,7 @@ class RoomChatController extends AsyncNotifier<IList<Event>?> {
final event = await client.sendMessage(
SendMessageRequest(
roomId: roomId,
baseContent: attachment?.$2,
baseContent: baseContent,
mentions: Mentions(
userIds: [
if (shouldMention == true &&
@ -158,8 +165,6 @@ class RoomChatController extends AsyncNotifier<IList<Event>?> {
),
);
ref.invalidate(AttachmentController.provider(roomId));
ref
.watch(RoomsController.provider.notifier)
.update(

View file

@ -3,7 +3,6 @@ import "package:flutter_riverpod/flutter_riverpod.dart";
import "package:http/http.dart";
import "package:nexus/controllers/client_state.dart";
import "package:nexus/controllers/header.dart";
import "package:nexus/helpers/extensions/mxc_to_https.dart";
import "package:nexus/models/open_graph_data.dart";
class UrlPreviewController extends AsyncNotifier<OpenGraphData?> {
@ -30,12 +29,9 @@ class UrlPreviewController extends AsyncNotifier<OpenGraphData?> {
final decodedValue = json.decode(response.body);
if (decodedValue is! Map<String, dynamic>) return null;
final mxc = decodedValue["og:image"];
final image = mxc == null
? null
: Uri.tryParse(mxc)?.mxcToHttps(homeserver);
return .fromJson(decodedValue).copyWith(imageUrl: image);
return .fromJson(
decodedValue,
).copyWith(imageUrl: decodedValue["og:image"]);
}
}
}