func ConversationName(metadata *proto.ConversationMetadata) string { names := make([]string, 0, len(metadata.Participants)) already := make(map[string]struct{}) for _, s := range metadata.Participants { if _, ok := already[s]; !ok { names = append(names, encoding.EscapeFilename(s)) already[s] = struct{}{} } } sort.Strings(names) return encoding.EscapeFilename(metadata.Subject) + " %between " + strings.Join(names, " %and ") }
func (d *Daemon) profilePath(name string) string { return filepath.Join(d.profilesDir(), encoding.EscapeFilename(name)) }
func (d *Daemon) ratchetPath(name string) string { return filepath.Join(d.ratchetKeysDir(), encoding.EscapeFilename(name)) }