Skip to content

Commit

Permalink
change: 使用服务器提供的头像 (#173)
Browse files Browse the repository at this point in the history
* 删掉 gravatar

* 固定 sentry 版本,修复编译错误

fix #163
  • Loading branch information
he0119 authored Nov 12, 2021
1 parent c603405 commit 8979990
Show file tree
Hide file tree
Showing 11 changed files with 29 additions and 33 deletions.
4 changes: 2 additions & 2 deletions lib/board/graphql/queries/topic_detail.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ query topicDetail($topicId: ID!, $orderBy: String!, $after: String) {
isPin
user {
username
email
avatarUrl
}
createdAt
editedAt
Expand All @@ -24,7 +24,7 @@ query topicDetail($topicId: ID!, $orderBy: String!, $after: String) {
body
user {
username
email
avatarUrl
}
createdAt
editedAt
Expand Down
2 changes: 1 addition & 1 deletion lib/board/graphql/queries/topics.dart
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ query topics($after: String) {
editedAt
user {
username
email
avatarUrl
}
comments(last: 1) {
edges {
Expand Down
4 changes: 2 additions & 2 deletions lib/board/view/widgets/item_title.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
import 'package:smarthome/core/core.dart';
import 'package:smarthome/user/user.dart';
import 'package:smarthome/utils/date_format_extension.dart';
import 'package:smarthome/widgets/gravatar.dart';
import 'package:smarthome/widgets/avatar.dart';

class ItemTitle extends StatelessWidget {
final User? user;
Expand All @@ -19,7 +19,7 @@ class ItemTitle extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ListTile(
leading: CircleGravatar(email: user!.email!),
leading: MyCircleAvatar(avatarUrl: user?.avatarUrl),
title: Text(user!.username),
subtitle: Text(editedAt!.toLocalStr()),
trailing: (onSelected != null)
Expand Down
1 change: 1 addition & 0 deletions lib/user/graphql/queries/viewer.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ query viewer {
viewer {
username
email
avatarUrl
}
}
''';
5 changes: 3 additions & 2 deletions lib/user/model/user.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,16 @@ part 'user.g.dart';
class User extends Equatable {
final String username;
final String? email;
final String? avatarUrl;

const User({required this.username, required this.email});
const User({required this.username, required this.email, this.avatarUrl});

factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json);

Map<String, dynamic> toJson() => _$UserToJson(this);

@override
List<Object?> get props => [username, email];
List<Object?> get props => [username, email, avatarUrl];

@override
String toString() => username;
Expand Down
2 changes: 2 additions & 0 deletions lib/user/model/user.g.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 0 additions & 12 deletions lib/utils/gravatar_url.dart

This file was deleted.

22 changes: 13 additions & 9 deletions lib/widgets/gravatar.dart → lib/widgets/avatar.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,28 @@ import 'dart:io';
import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:smarthome/utils/gravatar_url.dart';

class CircleGravatar extends StatelessWidget {
final String email;
final int? size;
class MyCircleAvatar extends StatelessWidget {
final String? avatarUrl;

const CircleGravatar({
const MyCircleAvatar({
Key? key,
required this.email,
this.size,
required this.avatarUrl,
}) : super(key: key);

@override
Widget build(BuildContext context) {
final url = avatarUrl;
if (url == null) {
return CircleAvatar(
backgroundColor: Colors.grey,
child: Text('?', style: TextStyle(fontSize: 24)),
);
}
// CachedNetworkImage 暂时不支持 Windows
if (kIsWeb || !Platform.isWindows) {
return CachedNetworkImage(
imageUrl: getGravatarUrl(email: email, size: size),
imageUrl: url,
imageBuilder: (context, imageProvider) => CircleAvatar(
backgroundImage: imageProvider,
),
Expand All @@ -29,7 +33,7 @@ class CircleGravatar extends StatelessWidget {
);
} else {
return CircleAvatar(
backgroundImage: NetworkImage(getGravatarUrl(email: email, size: size)),
backgroundImage: NetworkImage(url),
);
}
}
Expand Down
7 changes: 3 additions & 4 deletions lib/widgets/drawer.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:smarthome/core/core.dart';
import 'package:smarthome/routers/delegate.dart';
import 'package:smarthome/storage/storage.dart';
import 'package:smarthome/widgets/gravatar.dart';
import 'package:smarthome/widgets/avatar.dart';

class MyDrawer extends StatelessWidget {
const MyDrawer({Key? key}) : super(key: key);
Expand All @@ -19,9 +19,8 @@ class MyDrawer extends StatelessWidget {
UserAccountsDrawerHeader(
accountName: Text(state.currentUser.username),
accountEmail: Text(state.currentUser.email!),
currentAccountPicture: CircleGravatar(
email: state.currentUser.email!,
size: 512,
currentAccountPicture: MyCircleAvatar(
avatarUrl: state.currentUser.avatarUrl,
),
),
ListTile(
Expand Down
2 changes: 1 addition & 1 deletion pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -862,7 +862,7 @@ packages:
source: hosted
version: "0.26.0"
sentry:
dependency: transitive
dependency: "direct main"
description:
name: sentry
url: "https://pub.flutter-io.cn"
Expand Down
1 change: 1 addition & 0 deletions pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ dependencies:
enum_to_string: ^2.0.0
version: ^2.0.0
tuple: ^2.0.0
sentry: 6.0.1

# Flutter
flutter_bloc: ^7.3.3
Expand Down

0 comments on commit 8979990

Please sign in to comment.