simplified code across the app and consolidated duplicated helpers
This commit is contained in:
@@ -66,13 +66,15 @@ class AvatarDiskCache {
|
||||
return isGroup ? 'g_$hex' : 'u_${hex}_$size';
|
||||
}
|
||||
|
||||
static String _hex(String value) {
|
||||
final buffer = StringBuffer();
|
||||
for (final b in utf8.encode(value)) {
|
||||
buffer.write(b.toRadixString(16).padLeft(2, '0'));
|
||||
}
|
||||
return buffer.toString();
|
||||
}
|
||||
static String _hex(String value) =>
|
||||
utf8.encode(value).map((b) => b.toRadixString(16).padLeft(2, '0')).join();
|
||||
|
||||
File _file(
|
||||
String dirPath, {
|
||||
required String id,
|
||||
required bool isGroup,
|
||||
required int size,
|
||||
}) => File('$dirPath/${fileName(id: id, isGroup: isGroup, size: size)}');
|
||||
|
||||
/// Synchronous read for warm sessions (cache directory already resolved).
|
||||
/// Returns null when the directory isn't known yet — the caller falls back
|
||||
@@ -86,9 +88,7 @@ class AvatarDiskCache {
|
||||
final path = _dirPath;
|
||||
if (path == null) return null;
|
||||
try {
|
||||
final file = File(
|
||||
'$path/${fileName(id: id, isGroup: isGroup, size: size)}',
|
||||
);
|
||||
final file = _file(path, id: id, isGroup: isGroup, size: size);
|
||||
if (!file.existsSync()) return null;
|
||||
final bytes = file.readAsBytesSync();
|
||||
return bytes.isEmpty ? null : bytes;
|
||||
@@ -104,9 +104,7 @@ class AvatarDiskCache {
|
||||
}) async {
|
||||
try {
|
||||
final dir = await _directory();
|
||||
final file = File(
|
||||
'${dir.path}/${fileName(id: id, isGroup: isGroup, size: size)}',
|
||||
);
|
||||
final file = _file(dir.path, id: id, isGroup: isGroup, size: size);
|
||||
if (!file.existsSync()) return null;
|
||||
final bytes = await file.readAsBytes();
|
||||
return bytes.isEmpty ? null : bytes;
|
||||
@@ -123,10 +121,12 @@ class AvatarDiskCache {
|
||||
}) async {
|
||||
try {
|
||||
final dir = await _directory();
|
||||
final file = File(
|
||||
'${dir.path}/${fileName(id: id, isGroup: isGroup, size: size)}',
|
||||
);
|
||||
await file.writeAsBytes(bytes, flush: true);
|
||||
await _file(
|
||||
dir.path,
|
||||
id: id,
|
||||
isGroup: isGroup,
|
||||
size: size,
|
||||
).writeAsBytes(bytes);
|
||||
if (!_pruned) {
|
||||
_pruned = true;
|
||||
unawaited(_prune(dir));
|
||||
@@ -142,7 +142,7 @@ class AvatarDiskCache {
|
||||
try {
|
||||
final dir = await _directory();
|
||||
if (isGroup) {
|
||||
final file = File('${dir.path}/${fileName(id: id, isGroup: true, size: 0)}');
|
||||
final file = _file(dir.path, id: id, isGroup: true, size: 0);
|
||||
if (file.existsSync()) await file.delete();
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user