fluffychat/lib/pages/settings_multiple_emotes/settings_multiple_emotes_view.dart

60 lines
2.1 KiB
Dart
Raw Normal View History

2020-10-03 12:31:29 +02:00
import 'package:flutter/material.dart';
2021-10-26 18:50:34 +02:00
2020-10-03 12:31:29 +02:00
import 'package:flutter_gen/gen_l10n/l10n.dart';
2021-10-26 18:50:34 +02:00
import 'package:matrix/matrix.dart';
2021-05-23 13:11:55 +02:00
import 'package:vrouter/vrouter.dart';
2020-10-03 12:31:29 +02:00
2021-11-09 21:32:16 +01:00
import 'package:fluffychat/pages/settings_multiple_emotes/settings_multiple_emotes.dart';
2021-10-26 18:50:34 +02:00
import 'package:fluffychat/widgets/matrix.dart';
2021-05-22 09:13:47 +02:00
class MultipleEmotesSettingsView extends StatelessWidget {
2021-04-24 08:00:03 +02:00
final MultipleEmotesSettingsController controller;
2020-10-03 12:31:29 +02:00
2021-10-17 14:15:29 +02:00
const MultipleEmotesSettingsView(this.controller, {Key key})
: super(key: key);
2020-10-03 12:31:29 +02:00
@override
Widget build(BuildContext context) {
2021-05-23 13:11:55 +02:00
final room = Matrix.of(context).client.getRoomById(controller.roomId);
2020-10-03 12:31:29 +02:00
return Scaffold(
appBar: AppBar(
2021-10-14 18:09:30 +02:00
leading: const BackButton(),
2020-10-03 12:31:29 +02:00
title: Text(L10n.of(context).emotePacks),
),
body: StreamBuilder(
stream: room.onUpdate.stream,
builder: (context, snapshot) {
final packs =
room.states['im.ponies.room_emotes'] ?? <String, Event>{};
2020-10-03 12:31:29 +02:00
if (!packs.containsKey('')) {
packs[''] = null;
}
final keys = packs.keys.toList();
keys.sort();
return ListView.separated(
separatorBuilder: (BuildContext context, int i) => Container(),
itemCount: keys.length,
itemBuilder: (BuildContext context, int i) {
final event = packs[keys[i]];
var packName = keys[i].isNotEmpty ? keys[i] : 'Default Pack';
if (event != null && event.content['pack'] is Map) {
if (event.content['pack']['displayname'] is String) {
packName = event.content['pack']['displayname'];
} else if (event.content['pack']['name'] is String) {
packName = event.content['pack']['name'];
}
}
return ListTile(
title: Text(packName),
onTap: () async {
2021-08-15 13:26:16 +02:00
VRouter.of(context).toSegments(
['rooms', room.id, 'details', 'emotes', keys[i]]);
2020-10-03 12:31:29 +02:00
},
);
});
},
),
);
}
}