From 652db6391e9ff7776a07dca5e441bba56dbe3ce4 Mon Sep 17 00:00:00 2001 From: zoe Date: Sat, 6 Aug 2022 13:47:18 +0200 Subject: [PATCH] profile pics and usernames now visible --- lib/business_logic/account/account.dart | 11 +++++++ lib/business_logic/timeline/timeline.dart | 3 ++ lib/pages/settings/accessibility.dart | 1 + lib/partials/post.dart | 40 +++++++++++++++++++---- 4 files changed, 48 insertions(+), 7 deletions(-) create mode 100644 lib/business_logic/account/account.dart create mode 100644 lib/pages/settings/accessibility.dart diff --git a/lib/business_logic/account/account.dart b/lib/business_logic/account/account.dart new file mode 100644 index 0000000..e992904 --- /dev/null +++ b/lib/business_logic/account/account.dart @@ -0,0 +1,11 @@ +class AccountModel { + late String acct; + late String displayName; + late String avatar; + + AccountModel.fromJson(Map json) { + acct = json["acct"]; + displayName = json["display_name"]; + avatar = json["avatar"]; + } +} diff --git a/lib/business_logic/timeline/timeline.dart b/lib/business_logic/timeline/timeline.dart index 8612ffa..58f3184 100644 --- a/lib/business_logic/timeline/timeline.dart +++ b/lib/business_logic/timeline/timeline.dart @@ -1,5 +1,6 @@ import 'dart:convert'; import 'package:http/http.dart' as http; +import 'package:slothmu/business_logic/account/account.dart'; import '../settings.dart' as settings; import '../../global.dart' as global; @@ -20,6 +21,7 @@ class PostModel implements Comparable { late String spoilerText; late bool favourited; late bool reblogged; + late AccountModel account; PostModel.fromJson(Map json) { id = json["id"] as String; @@ -32,6 +34,7 @@ class PostModel implements Comparable { spoilerText = json["spoiler_text"] as String; favourited = json["favourited"] as bool; reblogged = json["reblogged"] as bool; + account = AccountModel.fromJson(json["account"]); } @override diff --git a/lib/pages/settings/accessibility.dart b/lib/pages/settings/accessibility.dart new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/lib/pages/settings/accessibility.dart @@ -0,0 +1 @@ + diff --git a/lib/partials/post.dart b/lib/partials/post.dart index bfdff33..a6e1ee6 100644 --- a/lib/partials/post.dart +++ b/lib/partials/post.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:localization/localization.dart'; +import 'package:slothmu/business_logic/account/account.dart'; import '../business_logic/timeline/timeline.dart' as tl; class Post extends StatefulWidget { @@ -15,7 +16,7 @@ class _PostState extends State { Widget build(BuildContext context) { return Column( children: [ - const DisplayName(), + DisplayName(account: widget.model.account), PostBody( sensitive: widget.model.sensitive, content: widget.model.content, @@ -29,27 +30,31 @@ class _PostState extends State { class DisplayName extends StatelessWidget { const DisplayName({ + required this.account, Key? key, }) : super(key: key); + final AccountModel account; @override Widget build(BuildContext context) { return Row( children: [ - const Icon( - Icons.face, - size: 64, - ), + ClipRRect( + borderRadius: const BorderRadius.all(Radius.circular(8)), + child: ProfilePic( + url: account.avatar, + )), + const SizedBox(width: 8), Column( mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - "first name display last name name", + account.displayName, style: Theme.of(context).textTheme.titleMedium, ), Text( - "@alice_exampleuser@example.com", + account.acct, style: Theme.of(context).textTheme.bodySmall, ), ], @@ -59,6 +64,27 @@ class DisplayName extends StatelessWidget { } } +class ProfilePic extends StatelessWidget { + const ProfilePic({required this.url, Key? key}) : super(key: key); + final String url; + + @override + Widget build(BuildContext context) { + const double width = 64; + if (url.isNotEmpty) { + return Image.network( + url, + width: 64, + ); + } else { + return const Icon( + Icons.cruelty_free, + size: width, + ); + } + } +} + class PostBody extends StatefulWidget { const PostBody({ required this.sensitive,