sort newly created tabs after parent
This commit is contained in:
@@ -21,6 +21,7 @@ import 'dart:async';
|
|||||||
|
|
||||||
import 'package:drift/drift.dart';
|
import 'package:drift/drift.dart';
|
||||||
import 'package:lexo_rank/lexo_rank.dart';
|
import 'package:lexo_rank/lexo_rank.dart';
|
||||||
|
import 'package:nullability/nullability.dart';
|
||||||
import 'package:weblibre/features/geckoview/domain/entities/states/tab.dart';
|
import 'package:weblibre/features/geckoview/domain/entities/states/tab.dart';
|
||||||
import 'package:weblibre/features/geckoview/features/tabs/data/database/database.dart';
|
import 'package:weblibre/features/geckoview/features/tabs/data/database/database.dart';
|
||||||
import 'package:weblibre/features/geckoview/features/tabs/data/models/tab_query_result.dart';
|
import 'package:weblibre/features/geckoview/features/tabs/data/models/tab_query_result.dart';
|
||||||
@@ -55,6 +56,21 @@ class TabDao extends DatabaseAccessor<TabDatabase> with _$TabDaoMixin {
|
|||||||
return query.map((row) => row.read(db.tab.containerId));
|
return query.map((row) => row.read(db.tab.containerId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<String> _generateOrderKey({
|
||||||
|
required Value<String?> parentId,
|
||||||
|
required Value<String?> containerId,
|
||||||
|
}) {
|
||||||
|
if (parentId.value.isNotEmpty) {
|
||||||
|
return db.containerDao
|
||||||
|
.generateOrderKeyAfterTabId(containerId.value, parentId.value!)
|
||||||
|
.getSingle();
|
||||||
|
} else {
|
||||||
|
return db.containerDao
|
||||||
|
.generateLeadingOrderKey(containerId.value)
|
||||||
|
.getSingle();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Future<String> upsertContainerTabTransactional(
|
Future<String> upsertContainerTabTransactional(
|
||||||
Future<String> Function() createTab, {
|
Future<String> Function() createTab, {
|
||||||
required Value<String?> parentId,
|
required Value<String?> parentId,
|
||||||
@@ -63,12 +79,9 @@ class TabDao extends DatabaseAccessor<TabDatabase> with _$TabDaoMixin {
|
|||||||
}) {
|
}) {
|
||||||
return db.transaction(() async {
|
return db.transaction(() async {
|
||||||
final tabId = await createTab();
|
final tabId = await createTab();
|
||||||
|
|
||||||
final currentOrderKey =
|
final currentOrderKey =
|
||||||
orderKey.value ??
|
orderKey.value ??
|
||||||
await db.containerDao
|
await _generateOrderKey(parentId: parentId, containerId: containerId);
|
||||||
.generateLeadingOrderKey(containerId.value)
|
|
||||||
.getSingle();
|
|
||||||
|
|
||||||
await db.tab.insertOne(
|
await db.tab.insertOne(
|
||||||
TabCompanion.insert(
|
TabCompanion.insert(
|
||||||
@@ -101,9 +114,7 @@ class TabDao extends DatabaseAccessor<TabDatabase> with _$TabDaoMixin {
|
|||||||
return db.transaction(() async {
|
return db.transaction(() async {
|
||||||
final currentOrderKey =
|
final currentOrderKey =
|
||||||
orderKey.value ??
|
orderKey.value ??
|
||||||
await db.containerDao
|
await _generateOrderKey(parentId: parentId, containerId: containerId);
|
||||||
.generateLeadingOrderKey(containerId.value)
|
|
||||||
.getSingle();
|
|
||||||
|
|
||||||
await db.tab.insertOne(
|
await db.tab.insertOne(
|
||||||
TabCompanion.insert(
|
TabCompanion.insert(
|
||||||
|
|||||||
Reference in New Issue
Block a user