Refactor cache key generation to use stable hash codes for java objects arguments
This commit is contained in:
@@ -429,10 +429,26 @@ class AniyomiBridge {
|
|||||||
|
|
||||||
String _generateCacheKey(JniIsolateMessageType messageType, Map<String, dynamic> args) {
|
String _generateCacheKey(JniIsolateMessageType messageType, Map<String, dynamic> args) {
|
||||||
// Create a stable string representation of the args
|
// Create a stable string representation of the args
|
||||||
final argsString = jsonEncode(args);
|
// final argsString = jsonEncode(args);
|
||||||
|
final argsString = args.entries
|
||||||
|
.map((entry) => "${entry.key}:${_getStableHashCode(entry.value)}")
|
||||||
|
.join(":").hashCode;
|
||||||
return "${messageType.name}_$argsString";
|
return "${messageType.name}_$argsString";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int _getStableHashCode(dynamic value) {
|
||||||
|
if (value is JSEpisode) {
|
||||||
|
return value.getUrl().toDartString().hashCode;
|
||||||
|
}else if (value is JSAnime) {
|
||||||
|
return value.getUrl().toDartString().hashCode;
|
||||||
|
} else if (value is JSManga) {
|
||||||
|
return value.getUrl().toDartString().hashCode;
|
||||||
|
} else if (value is JSChapter) {
|
||||||
|
return value.getUrl().toDartString().hashCode;
|
||||||
|
}
|
||||||
|
return value.hashCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// bool _isCacheable(JniIsolateMessageType messageType) {
|
// bool _isCacheable(JniIsolateMessageType messageType) {
|
||||||
|
|||||||
Reference in New Issue
Block a user