switch to top recent sites

This commit is contained in:
Fabian Freund
2026-03-09 12:30:58 +01:00
parent 62aed84fd8
commit 0fa526b1cb
9 changed files with 2205 additions and 2801 deletions
@@ -2,8 +2,10 @@ package eu.weblibre.flutter_mozilla_components.api
import eu.weblibre.flutter_mozilla_components.GlobalComponents
import eu.weblibre.flutter_mozilla_components.pigeons.GeckoHistoryApi
import eu.weblibre.flutter_mozilla_components.pigeons.FrecencyThresholdOption
import eu.weblibre.flutter_mozilla_components.pigeons.HistoryHighlight
import eu.weblibre.flutter_mozilla_components.pigeons.HistoryHighlightWeights
import eu.weblibre.flutter_mozilla_components.pigeons.TopFrecentSiteInfo
import eu.weblibre.flutter_mozilla_components.pigeons.VisitInfo
import eu.weblibre.flutter_mozilla_components.pigeons.VisitType
import kotlinx.coroutines.CoroutineScope
@@ -236,4 +238,31 @@ class GeckoHistoryApiImpl() : GeckoHistoryApi {
}
}
}
}
override fun getTopFrecentSites(
limit: Long,
frecencyThreshold: FrecencyThresholdOption,
callback: (Result<List<TopFrecentSiteInfo>>) -> Unit
) {
coroutineScope.launch {
withContext(Dispatchers.Main) {
val conceptThreshold = when (frecencyThreshold) {
FrecencyThresholdOption.NONE ->
mozilla.components.concept.storage.FrecencyThresholdOption.NONE
FrecencyThresholdOption.SKIP_ONE_TIME_PAGES ->
mozilla.components.concept.storage.FrecencyThresholdOption.SKIP_ONE_TIME_PAGES
}
val sites = components.core.historyStorage.getTopFrecentSites(
limit.toInt(),
conceptThreshold,
).map {
TopFrecentSiteInfo(
url = it.url,
title = it.title,
)
}
callback(Result.success(sites))
}
}
}
}
@@ -54,6 +54,7 @@ export 'src/pigeons/gecko.g.dart'
DohSettings,
DohSettingsMode,
EmailHitResult,
FrecencyThresholdOption,
GeckoDeleteBrowsingDataController,
GeckoEngineSettings,
GeckoFetchResponse,
@@ -97,6 +98,7 @@ export 'src/pigeons/gecko.g.dart'
TabContent,
TabContentState,
TabTranslationStateData,
TopFrecentSiteInfo,
TrackingProtectionException,
TrackingProtectionPolicy,
TrackingScope,
@@ -67,4 +67,11 @@ class GeckoHistoryService {
}) {
return _api.getHistoryHighlights(weights, limit);
}
Future<List<TopFrecentSiteInfo>> getTopFrecentSites({
required int limit,
required FrecencyThresholdOption frecencyThreshold,
}) {
return _api.getTopFrecentSites(limit, frecencyThreshold);
}
}
File diff suppressed because it is too large Load Diff
@@ -557,6 +557,15 @@ class HistoryHighlight {
);
}
class TopFrecentSiteInfo {
final String url;
final String? title;
TopFrecentSiteInfo(this.url, this.title);
}
enum FrecencyThresholdOption { none, skipOneTimePages }
class HistoryItem {
final String url;
final String title;
@@ -1823,6 +1832,12 @@ abstract class GeckoHistoryApi {
HistoryHighlightWeights weights,
int limit,
);
@async
List<TopFrecentSiteInfo> getTopFrecentSites(
int limit,
FrecencyThresholdOption frecencyThreshold,
);
}
@HostApi()