adopt two-step NIP-29 group creation with confirmation

This commit is contained in:
2026-10-10 08:40:10 +07:00
parent 4b6f4b3797
commit 2a07773848
6 changed files with 317 additions and 49 deletions
+32 -2
View File
@@ -155,9 +155,9 @@ impl GroupId {
.tag_maybe(previous)
}
pub fn create_group(&self, metadata: &GroupMetadata, previous: Option<Tag>) -> EventBuilder {
pub fn create_group(&self, previous: Option<Tag>) -> EventBuilder {
EventBuilder::new(Kind::GroupCreateGroup, "")
.tags(self.metadata_tags(metadata))
.tag(self.h_tag())
.tag_maybe(previous)
}
@@ -435,6 +435,36 @@ impl GroupMetadata {
}
}
/// Input for creating a group: access flags are presence-only per NIP-29.
#[derive(Debug, Clone, Default)]
pub struct GroupCreateOptions {
pub name: String,
pub about: Option<String>,
pub picture: Option<String>,
pub private: bool,
pub closed: bool,
pub restricted: bool,
pub hidden: bool,
pub custom_id: Option<String>,
pub parent: Option<GroupId>,
}
impl GroupCreateOptions {
pub(crate) fn metadata(&self, name: String) -> GroupMetadata {
GroupMetadata {
name: Some(name),
picture: self.picture.clone(),
about: self.about.clone(),
private: self.private,
restricted: self.restricted,
hidden: self.hidden,
closed: self.closed,
parent: self.parent.clone(),
..Default::default()
}
}
}
#[derive(Debug, Clone)]
pub struct GroupCandidate {
pub key: GroupKey,