Compare commits
2 Commits
Author | SHA1 | Date | |
---|---|---|---|
73e27c5f5b | |||
559e0fea36 |
1265
lib/main.dart
1265
lib/main.dart
File diff suppressed because it is too large
Load Diff
@@ -348,10 +348,14 @@ Future<Note> createNote(String content) async {
|
||||
}
|
||||
}
|
||||
|
||||
final mostFrequentLetter =
|
||||
letterFrequency.entries.reduce((a, b) => a.value > b.value ? a : b).key;
|
||||
final mostFrequentLetterCount =
|
||||
letterFrequency[mostFrequentLetter]! / trimmedContent.length;
|
||||
// Handle the case where there are no alphanumeric characters
|
||||
String mostFrequentLetter = 'a'; // Default value
|
||||
double mostFrequentLetterCount = 0.0; // Default value
|
||||
|
||||
if (letterFrequency.isNotEmpty) {
|
||||
mostFrequentLetter = letterFrequency.entries.reduce((a, b) => a.value > b.value ? a : b).key;
|
||||
mostFrequentLetterCount = letterFrequency[mostFrequentLetter]! / (trimmedContent.length > 0 ? trimmedContent.length : 1);
|
||||
}
|
||||
|
||||
final document = {
|
||||
'id': generateRandomString(32),
|
||||
@@ -431,10 +435,14 @@ Future<void> updateNote(Note note) async {
|
||||
}
|
||||
}
|
||||
|
||||
final mostFrequentLetter =
|
||||
letterFrequency.entries.reduce((a, b) => a.value > b.value ? a : b).key;
|
||||
final mostFrequentLetterRatio =
|
||||
letterFrequency[mostFrequentLetter]! / trimmedContent.length;
|
||||
// Handle the case where there are no alphanumeric characters
|
||||
String mostFrequentLetter = 'a'; // Default value
|
||||
double mostFrequentLetterRatio = 0.0; // Default value
|
||||
|
||||
if (letterFrequency.isNotEmpty) {
|
||||
mostFrequentLetter = letterFrequency.entries.reduce((a, b) => a.value > b.value ? a : b).key;
|
||||
mostFrequentLetterRatio = letterFrequency[mostFrequentLetter]! / (trimmedContent.length > 0 ? trimmedContent.length : 1);
|
||||
}
|
||||
|
||||
final document = {
|
||||
'id': note.id,
|
||||
@@ -527,3 +535,101 @@ Future<Scratch> createScratch(String content) async {
|
||||
content: document['content'] as String,
|
||||
);
|
||||
}
|
||||
|
||||
Future<List<Note>> getNotesBefore(int epochTime, {int limit = 50}) async {
|
||||
final endpoint = await _getEndpoint();
|
||||
final headers = await _getHeaders();
|
||||
final searchCondition = MeilisearchQuery(
|
||||
q: '',
|
||||
filter: 'date < $epochTime',
|
||||
sort: ['date:desc'],
|
||||
limit: limit,
|
||||
);
|
||||
final response = await http.post(
|
||||
Uri.parse('$endpoint/indexes/$noteIndex/search'),
|
||||
headers: headers,
|
||||
body: jsonEncode(searchCondition.toJson()),
|
||||
);
|
||||
if (response.statusCode != 200) {
|
||||
throw Exception(
|
||||
'Failed to get notes before timestamp, backend responded with ${response.statusCode}',
|
||||
);
|
||||
}
|
||||
final responseJson = MeilisearchResponse.fromJson(jsonDecode(response.body));
|
||||
return responseJson.hits
|
||||
.map(
|
||||
(hit) => Note(
|
||||
id: hit['id'] as String,
|
||||
epochTime: hit['date'] as int,
|
||||
content: hit['content'] as String,
|
||||
),
|
||||
)
|
||||
.toList();
|
||||
}
|
||||
|
||||
Future<List<Note>> getNotesAfter(int epochTime, {int limit = 50}) async {
|
||||
final endpoint = await _getEndpoint();
|
||||
final headers = await _getHeaders();
|
||||
final searchCondition = MeilisearchQuery(
|
||||
q: '',
|
||||
filter: 'date > $epochTime',
|
||||
sort: ['date:asc'],
|
||||
limit: limit,
|
||||
);
|
||||
final response = await http.post(
|
||||
Uri.parse('$endpoint/indexes/$noteIndex/search'),
|
||||
headers: headers,
|
||||
body: jsonEncode(searchCondition.toJson()),
|
||||
);
|
||||
if (response.statusCode != 200) {
|
||||
throw Exception(
|
||||
'Failed to get notes after timestamp, backend responded with ${response.statusCode}',
|
||||
);
|
||||
}
|
||||
final responseJson = MeilisearchResponse.fromJson(jsonDecode(response.body));
|
||||
return responseJson.hits
|
||||
.map(
|
||||
(hit) => Note(
|
||||
id: hit['id'] as String,
|
||||
epochTime: hit['date'] as int,
|
||||
content: hit['content'] as String,
|
||||
),
|
||||
)
|
||||
.toList();
|
||||
}
|
||||
|
||||
Future<Duration> getPopupInterval() async {
|
||||
final value = await getSetting('popupInterval');
|
||||
if (value == null) {
|
||||
return const Duration(minutes: 20);
|
||||
}
|
||||
return Duration(minutes: int.parse(value));
|
||||
}
|
||||
|
||||
Future<void> setPopupInterval(Duration interval) async {
|
||||
await setSetting('popupInterval', interval.inMinutes.toString());
|
||||
}
|
||||
|
||||
Future<int> getCacheSizeBefore() async {
|
||||
final value = await getSetting('cacheSizeBefore');
|
||||
if (value == null) {
|
||||
return 50; // Default value
|
||||
}
|
||||
return int.parse(value);
|
||||
}
|
||||
|
||||
Future<void> setCacheSizeBefore(int size) async {
|
||||
await setSetting('cacheSizeBefore', size.toString());
|
||||
}
|
||||
|
||||
Future<int> getCacheSizeAfter() async {
|
||||
final value = await getSetting('cacheSizeAfter');
|
||||
if (value == null) {
|
||||
return 50; // Default value
|
||||
}
|
||||
return int.parse(value);
|
||||
}
|
||||
|
||||
Future<void> setCacheSizeAfter(int size) async {
|
||||
await setSetting('cacheSizeAfter', size.toString());
|
||||
}
|
||||
|
Reference in New Issue
Block a user