mirror of
https://github.com/git-touch/git-touch
synced 2025-02-22 06:17:40 +01:00
feat: add reaction emoji to issue screen
This commit is contained in:
parent
a4d00e5a81
commit
af79d33a7f
@ -9,6 +9,15 @@ import '../widgets/comment_item.dart';
|
|||||||
import '../providers/settings.dart';
|
import '../providers/settings.dart';
|
||||||
import '../widgets/action.dart';
|
import '../widgets/action.dart';
|
||||||
|
|
||||||
|
var reactionChunk = emojiMap.entries.map((entry) {
|
||||||
|
var key = entry.key;
|
||||||
|
return '''
|
||||||
|
$key: reactions(content: $key) {
|
||||||
|
totalCount
|
||||||
|
viewerHasReacted
|
||||||
|
}''';
|
||||||
|
}).join('\n');
|
||||||
|
|
||||||
/// Screen for issue and pull request
|
/// Screen for issue and pull request
|
||||||
class IssueScreen extends StatefulWidget {
|
class IssueScreen extends StatefulWidget {
|
||||||
final int number;
|
final int number;
|
||||||
@ -53,6 +62,7 @@ author {
|
|||||||
}
|
}
|
||||||
closed
|
closed
|
||||||
url
|
url
|
||||||
|
$reactionChunk
|
||||||
''';
|
''';
|
||||||
|
|
||||||
if (isPullRequest) {
|
if (isPullRequest) {
|
||||||
@ -78,6 +88,7 @@ __typename
|
|||||||
login
|
login
|
||||||
avatarUrl
|
avatarUrl
|
||||||
}
|
}
|
||||||
|
$reactionChunk
|
||||||
}
|
}
|
||||||
... on Commit {
|
... on Commit {
|
||||||
committedDate
|
committedDate
|
||||||
|
@ -4,6 +4,17 @@ import '../utils/utils.dart';
|
|||||||
import 'avatar.dart';
|
import 'avatar.dart';
|
||||||
import 'user_name.dart';
|
import 'user_name.dart';
|
||||||
|
|
||||||
|
final emojiMap = {
|
||||||
|
'THUMBS_UP': '👍',
|
||||||
|
'THUMBS_DOWN': '👎',
|
||||||
|
'LAUGH': '😄',
|
||||||
|
'HOORAY': '🎉',
|
||||||
|
'CONFUSED': '😕',
|
||||||
|
'HEART': '❤️',
|
||||||
|
'ROCKET': '🚀',
|
||||||
|
'EYES': '👀'
|
||||||
|
};
|
||||||
|
|
||||||
class CommentItem extends StatelessWidget {
|
class CommentItem extends StatelessWidget {
|
||||||
final Map<String, dynamic> payload;
|
final Map<String, dynamic> payload;
|
||||||
|
|
||||||
@ -11,7 +22,9 @@ class CommentItem extends StatelessWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Column(children: <Widget>[
|
return Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: <Widget>[
|
||||||
Row(children: <Widget>[
|
Row(children: <Widget>[
|
||||||
Avatar(
|
Avatar(
|
||||||
url: payload['author']['avatarUrl'],
|
url: payload['author']['avatarUrl'],
|
||||||
@ -34,12 +47,38 @@ class CommentItem extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
]),
|
]),
|
||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.only(left: 36, top: 8),
|
padding: const EdgeInsets.only(top: 12),
|
||||||
child: MarkdownBody(
|
child: MarkdownBody(
|
||||||
data: payload['body'],
|
data: payload['body'],
|
||||||
// styleSheet: MarkdownStyleSheet(code: TextStyle(fontSize: 14)),
|
// styleSheet: MarkdownStyleSheet(code: TextStyle(fontSize: 14)),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
]);
|
Wrap(
|
||||||
|
children: emojiMap.entries
|
||||||
|
.where((entry) => payload[entry.key]['totalCount'] != 0)
|
||||||
|
.map((entry) {
|
||||||
|
var emoji = entry.value;
|
||||||
|
int count = payload[entry.key]['totalCount'];
|
||||||
|
|
||||||
|
return Container(
|
||||||
|
padding: EdgeInsets.all(6),
|
||||||
|
child: RichText(
|
||||||
|
text: TextSpan(
|
||||||
|
style: TextStyle(fontSize: 16),
|
||||||
|
children: [
|
||||||
|
TextSpan(text: emoji),
|
||||||
|
TextSpan(text: ' '),
|
||||||
|
TextSpan(
|
||||||
|
text: count.toString(),
|
||||||
|
style: TextStyle(color: Palette.link),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}).toList(),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user