Remove blurHash references from User model and related components

This commit is contained in:
Leon Bösche
2026-01-28 23:59:15 +01:00
parent de26b280d0
commit f4f80b9ed7
6 changed files with 15 additions and 57 deletions

View File

@@ -6,7 +6,6 @@ class User extends Equatable {
final String email;
final String? displayName;
final String? avatarUrl;
final String? blurHash;
final DateTime createdAt;
final DateTime? lastLoginAt;
@@ -16,7 +15,6 @@ class User extends Equatable {
required this.email,
this.displayName,
this.avatarUrl,
this.blurHash,
required this.createdAt,
this.lastLoginAt,
});
@@ -28,7 +26,6 @@ class User extends Equatable {
email,
displayName,
avatarUrl,
blurHash,
createdAt,
lastLoginAt,
];
@@ -39,7 +36,6 @@ class User extends Equatable {
String? email,
String? displayName,
String? avatarUrl,
String? blurHash,
DateTime? createdAt,
DateTime? lastLoginAt,
}) {
@@ -49,7 +45,6 @@ class User extends Equatable {
email: email ?? this.email,
displayName: displayName ?? this.displayName,
avatarUrl: avatarUrl ?? this.avatarUrl,
blurHash: blurHash ?? this.blurHash,
createdAt: createdAt ?? this.createdAt,
lastLoginAt: lastLoginAt ?? this.lastLoginAt,
);
@@ -62,7 +57,6 @@ class User extends Equatable {
email: json['email'] as String,
displayName: json['displayName'] as String?,
avatarUrl: json['avatarUrl'] as String?,
blurHash: json['blurHash'] as String?,
createdAt: DateTime.parse(
json['createdAt'] as String? ?? DateTime.now().toIso8601String(),
),
@@ -79,7 +73,6 @@ class User extends Equatable {
'email': email,
'displayName': displayName,
'avatarUrl': avatarUrl,
'blurHash': blurHash,
'createdAt': createdAt.toIso8601String(),
'lastLoginAt': lastLoginAt?.toIso8601String(),
};

View File

@@ -186,13 +186,11 @@ class ApiClient {
String? displayName,
String? email,
String? avatarUrl,
String? blurHash,
}) async {
final data = <String, dynamic>{};
if (displayName != null) data['displayName'] = displayName;
if (email != null) data['email'] = email;
if (avatarUrl != null) data['avatarUrl'] = avatarUrl;
if (blurHash != null) data['blurHash'] = blurHash;
return putRaw('/user/profile', data: data);
}

View File

@@ -1,9 +1,6 @@
import 'package:flutter/material.dart';
import 'package:flutter_blurhash/flutter_blurhash.dart' as flutter_blurhash;
import 'package:file_picker/file_picker.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:blurhash_dart/blurhash_dart.dart' as blurhash_dart;
import 'package:image/image.dart' as img;
import 'package:get_it/get_it.dart';
import 'dart:io';
import '../blocs/auth/auth_bloc.dart';
@@ -29,7 +26,6 @@ class _AccountSettingsDialogState extends State<AccountSettingsDialog> {
// Profile fields
late TextEditingController _displayNameController;
String? _avatarUrl;
String? _blurHash;
// Security fields
late TextEditingController _currentPasswordController;
@@ -63,7 +59,6 @@ class _AccountSettingsDialogState extends State<AccountSettingsDialog> {
_currentUser = authState.user;
_displayNameController.text = _currentUser?.displayName ?? '';
_avatarUrl = _currentUser?.avatarUrl;
_blurHash = _currentUser?.blurHash;
}
}
@@ -79,13 +74,7 @@ class _AccountSettingsDialogState extends State<AccountSettingsDialog> {
final bytes = await file.readAsBytes();
final filename = result.files.single.name;
final image = img.decodeImage(bytes);
if (image == null) throw Exception('Invalid image');
// Generate blur hash
final blurHash = blurhash_dart.BlurHash.encode(image).hash;
setState(() {
_blurHash = blurHash;
_isLoading = true;
});
@@ -132,7 +121,6 @@ class _AccountSettingsDialogState extends State<AccountSettingsDialog> {
? null
: _displayNameController.text,
avatarUrl: _avatarUrl,
blurHash: _blurHash,
);
final updatedUser = _currentUser!.copyWith(
@@ -140,7 +128,6 @@ class _AccountSettingsDialogState extends State<AccountSettingsDialog> {
? null
: _displayNameController.text,
avatarUrl: _avatarUrl,
blurHash: _blurHash,
);
if (mounted) {
@@ -493,12 +480,20 @@ class _AccountSettingsDialogState extends State<AccountSettingsDialog> {
backgroundColor: AppTheme.secondaryText.withValues(
alpha: 0.2,
),
child: _avatarUrl != null && _blurHash != null
child: _avatarUrl != null
? ClipOval(
child: flutter_blurhash.BlurHash(
hash: _blurHash!,
image: _avatarUrl,
imageFit: BoxFit.cover,
child: Image.network(
_avatarUrl!,
fit: BoxFit.cover,
width: 100,
height: 100,
errorBuilder: (context, error, stackTrace) {
return Icon(
Icons.person,
size: 50,
color: AppTheme.secondaryText,
);
},
),
)
: Icon(

View File

@@ -41,14 +41,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "9.2.0"
blurhash_dart:
dependency: "direct main"
description:
name: blurhash_dart
sha256: "43955b6c2e30a7d440028d1af0fa185852f3534b795cc6eb81fbf397b464409f"
url: "https://pub.dev"
source: hosted
version: "1.2.1"
cached_network_image:
dependency: "direct main"
description:
@@ -254,14 +246,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "9.1.1"
flutter_blurhash:
dependency: "direct main"
description:
name: flutter_blurhash
sha256: e97b9aff13b9930bbaa74d0d899fec76e3f320aba3190322dcc5d32104e3d25d
url: "https://pub.dev"
source: hosted
version: "0.9.1"
flutter_cache_manager:
dependency: transitive
description:

View File

@@ -68,8 +68,6 @@ dependencies:
just_audio: ^0.10.5
flutter_web_plugins:
sdk: flutter
flutter_blurhash: ^0.9.1
blurhash_dart: ^1.2.1
image: ^4.7.2
dev_dependencies:

View File

@@ -3801,15 +3801,14 @@ func getUserProfileHandler(w http.ResponseWriter, r *http.Request, db *database.
Email string `json:"email"`
DisplayName *string `json:"displayName"`
AvatarURL *string `json:"avatarUrl"`
BlurHash *string `json:"blurHash"`
CreatedAt time.Time `json:"createdAt"`
LastLoginAt *time.Time `json:"lastLoginAt"`
}
err = db.QueryRowContext(r.Context(),
`SELECT id, username, email, display_name, avatar_url, blur_hash, created_at, last_login_at
`SELECT id, username, email, display_name, avatar_url, created_at, last_login_at
FROM users WHERE id = $1`, userID).
Scan(&user.ID, &user.Username, &user.Email, &user.DisplayName, &user.AvatarURL, &user.BlurHash, &user.CreatedAt, &user.LastLoginAt)
Scan(&user.ID, &user.Username, &user.Email, &user.DisplayName, &user.AvatarURL, &user.CreatedAt, &user.LastLoginAt)
if err != nil {
if err == sql.ErrNoRows {
errors.WriteError(w, errors.CodeNotFound, "User not found", http.StatusNotFound)
@@ -3842,7 +3841,6 @@ func updateUserProfileHandler(w http.ResponseWriter, r *http.Request, db *databa
DisplayName *string `json:"displayName"`
Email *string `json:"email"`
AvatarURL *string `json:"avatarUrl"`
BlurHash *string `json:"blurHash"`
}
if err = json.NewDecoder(r.Body).Decode(&req); err != nil {
@@ -3870,11 +3868,6 @@ func updateUserProfileHandler(w http.ResponseWriter, r *http.Request, db *databa
args = append(args, *req.AvatarURL)
argIndex++
}
if req.BlurHash != nil {
setParts = append(setParts, fmt.Sprintf("blur_hash = $%d", argIndex))
args = append(args, *req.BlurHash)
argIndex++
}
if len(setParts) == 0 {
// No fields to update
@@ -3905,9 +3898,6 @@ func updateUserProfileHandler(w http.ResponseWriter, r *http.Request, db *databa
if req.AvatarURL != nil {
metadata["avatarUrl"] = *req.AvatarURL
}
if req.BlurHash != nil {
metadata["blurHash"] = *req.BlurHash
}
auditLogger.Log(r.Context(), audit.Entry{
UserID: &userID,