Skip to content

Commit 0afd241

Browse files
local cat gateway collaborators
1 parent e9fed07 commit 0afd241

File tree

3 files changed

+36
-18
lines changed

3 files changed

+36
-18
lines changed

catalyst_voices/packages/internal/catalyst_voices_models/test/proposal/data/proposal_brief_data_test.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ void main() {
5858
final author = CatalystIdFactory.create(username: 'Author');
5959
final collaboratorA = CatalystIdFactory.create(username: 'CollabA', role0KeySeed: 1);
6060
final collaboratorB = CatalystIdFactory.create(username: 'CollabB', role0KeySeed: 2);
61+
6162
final collaboratorAAction = RawCollaboratorAction(
6263
id: collaboratorA,
6364
proposalId: id,

catalyst_voices/packages/internal/catalyst_voices_repositories/lib/src/api/local/local_cat_gateway.dart

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,18 @@ import 'package:collection/collection.dart';
1717
import 'package:http/http.dart' as http;
1818
import 'package:uuid_plus/uuid_plus.dart' as u;
1919

20+
/* cSpell:disable */
21+
const _collabId =
22+
'id.catalyst://[email protected]/AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=';
23+
2024
var _time = DateTime.timestamp().millisecondsSinceEpoch;
2125

2226
String _testAccountAuthorGetter(DocumentRef ref) {
2327
/* cSpell:disable */
2428
return 'id.catalyst://[email protected]/kouGJuMn6o18rRpDAZ1oiZadK171f5_-hgcHTYDGbo0=';
2529
/* cSpell:enable */
2630
}
31+
/* cSpell:enable */
2732

2833
String _v7() {
2934
final config = u.V7Options(_time -= 2000, null);
@@ -246,6 +251,7 @@ final class LocalCatGateway implements CatGateway {
246251
Uint8List _buildDoc(
247252
SignedDocumentMetadata metadata, {
248253
ProposalSubmissionAction? action,
254+
DocumentAuthorGetter? authorGetter,
249255
}) {
250256
final protectedHeaders = CoseHeaders.protected(
251257
contentType: const IntValue(CoseValues.jsonContentType),
@@ -259,6 +265,7 @@ final class LocalCatGateway implements CatGateway {
259265
ref: metadata.ref?.asCose,
260266
template: metadata.template?.asCose,
261267
reply: metadata.reply?.asCose,
268+
collabs: metadata.collabs,
262269
categoryId: metadata.categoryId?.asCose,
263270
);
264271

@@ -296,7 +303,7 @@ final class LocalCatGateway implements CatGateway {
296303
final ref = SignedDocumentRef(id: metadata.id!, ver: metadata.ver);
297304
final signature = CoseSignature(
298305
protectedHeaders: CoseHeaders.protected(
299-
kid: utf8.encode(authorGetter(ref)),
306+
kid: utf8.encode((authorGetter ?? this.authorGetter)(ref)),
300307
),
301308
unprotectedHeaders: const CoseHeaders.unprotected(),
302309
signature: Uint8List.fromList([]),
@@ -352,6 +359,7 @@ final class LocalCatGateway implements CatGateway {
352359
ver: ver,
353360
template: categoryConstRefs.proposal.asMetadataRef,
354361
categoryId: categoryConstRefs.category.asMetadataRef,
362+
collabs: const [_collabId],
355363
);
356364
_cache.update(
357365
id,
@@ -390,7 +398,31 @@ final class LocalCatGateway implements CatGateway {
390398
);
391399

392400
_cache[actionId] = [actionMetadata];
393-
_docs[actionMetadata] = _buildDoc(actionMetadata, action: action);
401+
_docs[actionMetadata] = _buildDoc(
402+
actionMetadata,
403+
action: action,
404+
);
405+
}
406+
407+
for (final collab in proposalMetadata.collabs ?? <String>[]) {
408+
final collabActionId = _v7();
409+
const collabAction = ProposalSubmissionAction.draft;
410+
411+
final collabActionMetadata = SignedDocumentMetadata(
412+
contentType: SignedDocumentContentType.json,
413+
documentType: DocumentType.proposalActionDocument,
414+
id: collabActionId,
415+
ver: collabActionId,
416+
ref: SignedDocumentMetadataRef(id: id, ver: ver),
417+
categoryId: categoryConstRefs.category.asMetadataRef,
418+
);
419+
420+
_cache[collabActionId] = [collabActionMetadata];
421+
_docs[collabActionMetadata] = _buildDoc(
422+
collabActionMetadata,
423+
action: collabAction,
424+
authorGetter: (_) => collab,
425+
);
394426
}
395427
}
396428
}

catalyst_voices/packages/internal/catalyst_voices_view_models/lib/src/proposal/proposal_brief.dart

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,7 @@ class ProposalBrief extends Equatable {
5252
commentsCount: data.commentsCount,
5353
isFavorite: data.isFavorite,
5454
voteData: data.votes.toViewModel(),
55-
// TODO(damian-molinski): Integration to be done
56-
// ignore: avoid_redundant_argument_values
57-
collaborators: null,
55+
collaborators: data.collaborators,
5856
);
5957
}
6058

@@ -140,19 +138,6 @@ class ProposalBrief extends Equatable {
140138
}
141139
}
142140

143-
final class ProposalBriefDataCollaborator extends Equatable {
144-
final CatalystId id;
145-
final ProposalsCollaborationStatus status;
146-
147-
const ProposalBriefDataCollaborator({
148-
required this.id,
149-
required this.status,
150-
});
151-
152-
@override
153-
List<Object?> get props => [id, status];
154-
}
155-
156141
extension on ProposalBriefDataVotes? {
157142
VoteButtonData? toViewModel() {
158143
final instance = this;

0 commit comments

Comments
 (0)