Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
ce9de77
remove totalAsk and proposalsCount from campaign model
damian-molinski Nov 13, 2025
0f35e10
proposalsCount -> finalProposalsCount
damian-molinski Nov 13, 2025
08d8c92
CampaignCategoryViewModel.id -> CampaignCategoryViewModel.ref
damian-molinski Nov 13, 2025
d382119
little DiscoveryCubit state build cleanup
damian-molinski Nov 13, 2025
83cf26f
watch campaign total ask in discovery
damian-molinski Nov 13, 2025
d926bd6
smaller voting category model
damian-molinski Nov 13, 2025
40259f7
new proposal campaign
damian-molinski Nov 14, 2025
14806ee
safe check
damian-molinski Nov 14, 2025
5bc064d
proposal builder category total ask
damian-molinski Nov 14, 2025
6e69435
chore: missing TODO
damian-molinski Nov 14, 2025
d2d0c39
category details
damian-molinski Nov 14, 2025
06ae095
watch proposals template total ask
damian-molinski Nov 17, 2025
5f4d8ed
finish integration of total_ask
damian-molinski Nov 18, 2025
69946f8
close
damian-molinski Nov 18, 2025
bb50abd
remove print and add TODO
damian-molinski Nov 18, 2025
d977e5c
documents getLatestOf
damian-molinski Nov 18, 2025
e55433f
remove old tables and daos
damian-molinski Nov 18, 2025
520a432
deleteWhere tests
damian-molinski Nov 18, 2025
16090d5
remove old pagination and count methods
damian-molinski Nov 18, 2025
5578eb0
local draft documents dao
damian-molinski Nov 18, 2025
9fb6875
Merge branch 'feat/database_optimization_3528' into feat/campaign_tot…
damian-molinski Nov 19, 2025
c3f69fd
Merge branch 'feat/campaign_total_ask' into chore/remove_old_daos
damian-molinski Nov 19, 2025
98b19df
Merge branch 'feat/database_optimization_3528' into feat/campaign_tot…
damian-molinski Nov 19, 2025
5819aa4
categoryId -> categoryRef
damian-molinski Nov 19, 2025
673d4f1
Merge feat/campaign_total_ask into chore/remove_old_daos
damian-molinski Nov 19, 2025
21e7fdd
Merge branch 'feat/database_optimization_3528' into feat/campaign_tot…
damian-molinski Nov 20, 2025
844478b
Merge branch 'feat/campaign_total_ask' into chore/remove_old_daos
damian-molinski Nov 20, 2025
67b4241
Merge feat/database_optimization_3528 into chore/remove_old_daos
damian-molinski Nov 21, 2025
24e533a
Merge branch 'chore/remove_old_daos' of github.com:input-output-hk/ca…
damian-molinski Nov 21, 2025
3d892f0
chore: notInType -> typeNotIn
damian-molinski Nov 21, 2025
566acd6
chore: move DriftDocumentsV2LocalMetadataDao setup into group
damian-molinski Nov 21, 2025
a5e8acf
separate get and getWhere
damian-molinski Nov 21, 2025
f5e0a59
docs: documents sources interfaces documentation
damian-molinski Nov 21, 2025
ead0664
chore: methods rename
damian-molinski Nov 21, 2025
8a18485
chore: refTo -> referencing
damian-molinski Nov 21, 2025
3a6fa43
chore: typeNotIn -> excludeTypes
damian-molinski Nov 21, 2025
5bb87d0
update content
damian-molinski Nov 21, 2025
9d9356d
feat(cat-voices): smaller proposals query scope (#3747)
damian-molinski Nov 21, 2025
619baaf
Merge branch 'feat/database_optimization_3528' into chore/remove_old_…
damian-molinski Nov 21, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions catalyst_voices/apps/voices/lib/configs/bootstrap.dart
Original file line number Diff line number Diff line change
Expand Up @@ -182,8 +182,8 @@ Future<void> cleanUpStorages({
Future<void> cleanUpUserDataFromDatabase() async {
final db = Dependencies.instance.get<CatalystDatabase>();

await db.draftsDao.deleteWhere();
await db.favoritesDao.deleteAll();
await db.localDocumentsV2Dao.deleteWhere();
await db.localMetadataDao.deleteWhere();
}

@visibleForTesting
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,7 @@ final class Dependencies extends DependencyProvider {
get<ProposalService>(),
get<CommentService>(),
get<CampaignService>(),
get<DocumentsService>(),
get<DocumentMapper>(),
get<VotingBallotBuilder>(),
get<VotingService>(),
Expand Down Expand Up @@ -261,11 +262,6 @@ final class Dependencies extends DependencyProvider {
get<CatalystProfiler>(),
);
})
..registerLazySingleton<DocumentFavoriteSource>(() {
return DatabaseDocumentFavoriteSource(
get<CatalystDatabase>(),
);
})
..registerLazySingleton<CatGatewayDocumentDataSource>(() {
return CatGatewayDocumentDataSource(
get<ApiServices>(),
Expand All @@ -285,7 +281,6 @@ final class Dependencies extends DependencyProvider {
get<DatabaseDraftsDataSource>(),
get<DatabaseDocumentsDataSource>(),
get<CatGatewayDocumentDataSource>(),
get<DocumentFavoriteSource>(),
);
})
..registerLazySingleton<DocumentMapper>(() => const DocumentMapperImpl())
Expand Down
11 changes: 10 additions & 1 deletion catalyst_voices/docs/performance/proposals_query.csv
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,13 @@ docs_count ,filer ,avg_duration ,PR ,note
7008 ,categories:finals ,0:00:01.294485 ,#3622 ,-
14008 ,categories ,0:00:02.108506 ,#3622 ,-
14008 ,categories:drafts ,0:00:01.585000 ,#3622 ,-
14008 ,categories:finals ,0:00:05.024950 ,#3622 ,-
14008 ,categories:finals ,0:00:05.024950 ,#3622 ,-
712 ,categories ,0:00:00.139314 ,#3747 ,-
712 ,categories:drafts ,0:00:00.138364 ,#3747 ,-
712 ,categories:finals ,0:00:00.148680 ,#3747 ,-
7008 ,categories ,0:00:00.168405 ,#3747 ,-
7008 ,categories:drafts ,0:00:00.190470 ,#3747 ,-
7008 ,categories:finals ,0:00:00.167145 ,#3747 ,-
14008 ,categories ,0:00:00.253610 ,#3747 ,-
14008 ,categories:drafts ,0:00:00.266390 ,#3747 ,-
14008 ,categories:finals ,0:00:00.247054 ,#3747 ,-
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ final class ProposalCubit extends Cubit<ProposalState>
final ProposalService _proposalService;
final CommentService _commentService;
final CampaignService _campaignService;
final DocumentsService _documentsService;
final DocumentMapper _documentMapper;
final VotingBallotBuilder _ballotBuilder;
final VotingService _votingService;
Expand All @@ -40,6 +41,7 @@ final class ProposalCubit extends Cubit<ProposalState>
this._proposalService,
this._commentService,
this._campaignService,
this._documentsService,
this._documentMapper,
this._ballotBuilder,
this._votingService,
Expand Down Expand Up @@ -89,7 +91,7 @@ final class ProposalCubit extends Cubit<ProposalState>
final commentTemplate = await _commentService.getCommentTemplateFor(
category: proposal.document.metadata.categoryId,
);
final isFavorite = await _proposalService.watchIsFavoritesProposal(ref: ref).first;
final isFavorite = await _documentsService.isFavorite(ref);

_cache = _cache.copyWith(
proposal: Optional(proposal),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -941,12 +941,22 @@ final class ProposalBuilderBloc extends Bloc<ProposalBuilderEvent, ProposalBuild
emit(state.copyWith(isChanging: true));
if (state.isMaxProposalsLimitReached) {
final proposalSubmissionCloseDate = await _getProposalSubmissionCloseDate();
final count = await _proposalService.watchUserProposalsCount().first;
final activeAccountId = _userService.user.activeAccount?.catalystId;
final count = activeAccountId == null
? 0
: await _proposalService
.watchProposalsCountV2(
filters: ProposalsFiltersV2(
status: ProposalStatusFilter.aFinal,
author: activeAccountId,
),
)
.first;

if (proposalSubmissionCloseDate != null) {
final signal = MaxProposalsLimitReachedSignal(
proposalSubmissionCloseDate: proposalSubmissionCloseDate,
currentSubmissions: count.finals,
currentSubmissions: count,
maxSubmissions: ProposalDocument.maxSubmittedProposalsPerUser,
);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ export 'catalyst_compression/catalyst_compressor_fakes.dart';
export 'catalyst_key_derivation/bip32_ed25519_fakes.dart';
export 'catalyst_key_derivation/key_derivation_service_fakes.dart';
export 'catalyst_voices_models/crypto/catalyst_crypto_fakes.dart';
export 'catalyst_voices_models/document/document_factories.dart';
export 'catalyst_voices_models/document/document_data_factory.dart';
export 'catalyst_voices_models/document/document_ref_factory.dart';
export 'catalyst_voices_repositories/api/api_mocks.dart';
export 'catalyst_voices_repositories/repository_mocks.dart';
export 'catalyst_voices_repositories/user/keychain_fakes.dart';
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import 'package:catalyst_voices_dev/catalyst_voices_dev.dart';
import 'package:catalyst_voices_models/catalyst_voices_models.dart' hide Document;

abstract final class DocumentDataFactory {
static DocumentData build({
DocumentType type = DocumentType.proposalDocument,
DocumentRef? selfRef,
SignedDocumentRef? template,
SignedDocumentRef? categoryId,
DocumentDataContent content = const DocumentDataContent({}),
}) {
return DocumentData(
metadata: DocumentDataMetadata(
type: type,
selfRef: selfRef ?? DocumentRefFactory.signedDocumentRef(),
template: template,
categoryId: categoryId,
),
content: content,
);
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import 'dart:math';

import 'package:catalyst_voices_models/catalyst_voices_models.dart';
import 'package:flutter/foundation.dart';
import 'package:uuid_plus/uuid_plus.dart';

abstract final class DocumentRefFactory {
static final Random _random = Random(57342052346526);
static var _timestamp = DateTime.now().millisecondsSinceEpoch;

static DraftRef draftRef() {
return DraftRef.first(randomUuidV7());
}

static String randomUuidV7() {
return const UuidV7().generate(
options: V7Options(
_randomDateTime().millisecondsSinceEpoch,
_randomBytes(10),
),
);
}

static SignedDocumentRef signedDocumentRef() {
return SignedDocumentRef.first(randomUuidV7());
}

static String uuidV7At(DateTime dateTime) {
final ts = dateTime.millisecondsSinceEpoch;
final rand = Uint8List.fromList([42, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
return const UuidV7().generate(options: V7Options(ts, rand));
}

static List<int> _randomBytes(int length) {
return List.generate(length, (index) => _random.nextInt(256));
}

static DateTime _randomDateTime() {
final timestamp = _timestamp;
_timestamp++;

return DateTime.fromMillisecondsSinceEpoch(timestamp);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -97,9 +97,6 @@ export 'proposal/proposal_or_document.dart';
export 'proposal/proposal_version.dart';
export 'proposal/proposal_votes.dart';
export 'proposal/proposal_with_context.dart';
export 'proposals/proposals_count.dart';
export 'proposals/proposals_count_filters.dart';
export 'proposals/proposals_filters.dart';
export 'proposals/proposals_filters_v2.dart';
export 'proposals/proposals_order.dart';
export 'proposals/proposals_total_ask_filters.dart';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ sealed class DocumentRef extends Equatable implements Comparable<DocumentRef> {
/// Whether the ref specifies the document [version].
bool get isExact => version != null;

bool get isLoose => !isExact;

@override
List<Object?> get props => [id, version];

Expand Down
Loading