Struct AuthorDirectory
pub struct AuthorDirectory { /* private fields */ }Expand description
Maps automerge actor ids to the people the chrome should name.
Registrations win over inference: the collaboration layer resolves peer
identity and the local process resolves the user, so both call
AuthorDirectory::register. Everything else falls through the
handle-decode and then the unknown-participant path.
Implementations§
§impl AuthorDirectory
impl AuthorDirectory
pub fn new() -> AuthorDirectory
pub fn new() -> AuthorDirectory
An empty directory. Every actor resolves to an unknown participant until something registers it.
pub fn register(&mut self, actor_hex: &str, author: HistoryAuthor)
pub fn register(&mut self, actor_hex: &str, author: HistoryAuthor)
Bind an actor id to a known person. Later registrations replace earlier ones for the same actor — a peer that re-announces with a corrected display name should win.
pub fn register_person(&mut self, principal: &str, author: HistoryAuthor)
pub fn register_person(&mut self, principal: &str, author: HistoryAuthor)
Bind a person’s principal (the hex of their root key, or a handle) to how they are named, so the changes they make and the changes made on their behalf both name them.
pub fn register_agent(&mut self, actor_hex: &str, agent: HistoryAgent)
pub fn register_agent(&mut self, actor_hex: &str, agent: HistoryAgent)
Bind the actor id actor_hex a delegated agent writes as (its own
device key) to that agent: its changes read as the agent’s, on behalf
of its person, wherever this directory names authors.
pub fn register_roster_agent(&mut self, agent: &RosterAgent)
pub fn register_roster_agent(&mut self, agent: &RosterAgent)
Name a verified roster agent: the changes its own device key signed read as the agent’s, on behalf of its person, and the person reads by the name governance gives them unless the directory already names them.
pub fn with_room_agents() -> AuthorDirectory
pub fn with_room_agents() -> AuthorDirectory
An empty directory that names every agent the session verified for
the rooms this thread’s app is in (set_room_agents): what an app’s
own history reads with.
pub fn register_local_identity(&mut self, actor_hex: &str) -> bool
pub fn register_local_identity(&mut self, actor_hex: &str) -> bool
Bind actor_hex to the local user, read from the Tilo identity on disk.
A false return is not an error: an app run outside a Tilo session has
no identity, and the caller should leave the actor to resolve through
the handle path.
pub fn resolve(&self, actor_hex: &str) -> HistoryAuthor
pub fn resolve(&self, actor_hex: &str) -> HistoryAuthor
Look up an actor. Never fails, never invents a name — see the module docs for the fallback ladder.
pub fn resolve_file_actor(
&self,
person: &[u8; 32],
device: &[u8; 32],
) -> Option<HistoryAuthor>
pub fn resolve_file_actor( &self, person: &[u8; 32], device: &[u8; 32], ) -> Option<HistoryAuthor>
The author of a file version signed by device, certified by the
root person: the agent that device is, on behalf of that person,
or else the person by name. None when the directory knows neither.
pub fn set_reader(&mut self, principal: impl Into<String>)
pub fn set_reader(&mut self, principal: impl Into<String>)
Name the principal reading the history: their own changes read as
“You”. Without one, the person this thread’s app runs for
(read_as).
pub fn resolve_entry(
&self,
actor_hex: &str,
entry: Option<&ActionContext>,
) -> HistoryAuthor
pub fn resolve_entry( &self, actor_hex: &str, entry: Option<&ActionContext>, ) -> HistoryAuthor
Who wrote a change, by the authenticated invoker its entry records (the writing actor only when it names nobody): its name, the person it acted for, and who it is to the reader.
pub fn set_color_override(
&mut self,
identity: impl Into<String>,
rgb: (u8, u8, u8),
)
pub fn set_color_override( &mut self, identity: impl Into<String>, rgb: (u8, u8, u8), )
Seed or replace this identity’s colour so history agrees with
crate::presence::PresenceCtx::color_for.
pub fn colour_for(&self, identity: &str) -> (u8, u8, u8)
pub fn colour_for(&self, identity: &str) -> (u8, u8, u8)
The colour history paints identity in: the person’s own colour
when one was seeded, otherwise the shared palette slot.
pub fn is_registered(&self, actor_hex: &str) -> bool
pub fn is_registered(&self, actor_hex: &str) -> bool
True when this actor has an explicitly registered identity, as opposed to a decoded handle or the unknown-participant fallback. The chrome uses this to decide whether a row’s author is trustworthy enough to, say, offer a “message them” affordance.
pub fn len(&self) -> usize
pub fn is_empty(&self) -> bool
Trait Implementations§
§impl Clone for AuthorDirectory
impl Clone for AuthorDirectory
§fn clone(&self) -> AuthorDirectory
fn clone(&self) -> AuthorDirectory
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl Debug for AuthorDirectory
impl Debug for AuthorDirectory
§impl Default for AuthorDirectory
impl Default for AuthorDirectory
§fn default() -> AuthorDirectory
fn default() -> AuthorDirectory
§impl PartialEq for AuthorDirectory
impl PartialEq for AuthorDirectory
impl StructuralPartialEq for AuthorDirectory
Auto Trait Implementations§
impl Freeze for AuthorDirectory
impl RefUnwindSafe for AuthorDirectory
impl Send for AuthorDirectory
impl Sync for AuthorDirectory
impl Unpin for AuthorDirectory
impl UnsafeUnpin for AuthorDirectory
impl UnwindSafe for AuthorDirectory
Blanket Implementations§
§impl<T> AnyEq for T
impl<T> AnyEq for T
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more