Skip to content

Commit a095ef6

Browse files
authored
Merge pull request #274 from supreme2580/auto-favorite
Auto favorite
2 parents 00a99c0 + db46f6a commit a095ef6

File tree

1 file changed

+23
-2
lines changed

1 file changed

+23
-2
lines changed

onchain/src/multi_canvas.cairo

+23-2
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,8 @@ pub mod MultiCanvas {
113113
stencil_counts: LegacyMap::<u32, u32>,
114114
// Map: (canvas_id, stencil_id) -> stencil metadata
115115
stencils: LegacyMap::<(u32, u32), StencilMetadata>,
116+
// Maps: (canvas_id, stencil_id, user addr) -> if favorited
117+
stencil_favorites: LegacyMap::<(u32, u32, ContractAddress), bool>
116118
}
117119

118120
#[event]
@@ -327,6 +329,11 @@ pub mod MultiCanvas {
327329
self.canvas_count.write(canvas_id + 1);
328330
self.unique_names.write(init_params.unique_name, true);
329331
self.emit(CanvasCreated { canvas_id, init_params });
332+
333+
// Auto-favorite the canvas for the creator
334+
let caller = get_caller_address();
335+
self.canvas_favorites.write((canvas_id, caller), true);
336+
self.emit(Event::CanvasFavorited(CanvasFavorited { canvas_id, user: caller }));
330337
canvas_id
331338
}
332339

@@ -490,6 +497,12 @@ pub mod MultiCanvas {
490497
self.stencils.write((canvas_id, stencil_id), stencil.clone());
491498
self.stencil_counts.write(canvas_id, stencil_id + 1);
492499
self.emit(StencilAdded { canvas_id, stencil_id, stencil });
500+
501+
// Auto-favorite the stencil for the creator
502+
let caller = get_caller_address();
503+
self.stencil_favorites.write((canvas_id, stencil_id, caller), true);
504+
self.emit(StencilFavorited { canvas_id, stencil_id, user: caller });
505+
493506
stencil_id
494507
}
495508

@@ -502,12 +515,20 @@ pub mod MultiCanvas {
502515

503516
fn favorite_stencil(ref self: ContractState, canvas_id: u32, stencil_id: u32) {
504517
let caller = get_caller_address();
505-
self.emit(StencilFavorited { canvas_id, stencil_id, user: caller, });
518+
if self.stencil_favorites.read((canvas_id, stencil_id, caller)) {
519+
return;
520+
}
521+
self.stencil_favorites.write((canvas_id, stencil_id, caller), true);
522+
self.emit(StencilFavorited { canvas_id, stencil_id, user: caller });
506523
}
507524

508525
fn unfavorite_stencil(ref self: ContractState, canvas_id: u32, stencil_id: u32) {
509526
let caller = get_caller_address();
510-
self.emit(StencilUnfavorited { canvas_id, stencil_id, user: caller, });
527+
if !self.stencil_favorites.read((canvas_id, stencil_id, caller)) {
528+
return;
529+
}
530+
self.stencil_favorites.write((canvas_id, stencil_id, caller), false);
531+
self.emit(StencilUnfavorited { canvas_id, stencil_id, user: caller });
511532
}
512533
}
513534

0 commit comments

Comments
 (0)