@ddd-qc/profiles-dvm 0.26.10 → 0.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -75,7 +75,7 @@ let EditProfile = class EditProfile extends LitElement {
75
75
 
76
76
  <div class="row" style="justify-content: center; margin-bottom: 8px; align-self: start;" >
77
77
  <span style="font-size:18px;padding-right:10px;">${msg('Language')}:</span>
78
- <sl-radio-group id="langRadioGroup" @click="${this.handleLangChange}" .value=${(_c = this.profile) === null || _c === void 0 ? void 0 : _c.fields['lang']}>
78
+ <sl-radio-group id="langRadioGroup" @click=${this.handleLangChange} .value=${(_c = this.profile) === null || _c === void 0 ? void 0 : _c.fields['lang']}>
79
79
  <sl-radio value="en">🇬🇧</sl-radio>
80
80
  <sl-radio value="fr-fr">🇫🇷</sl-radio>
81
81
  </sl-radio-group>
@@ -1 +1 @@
1
- {"version":3,"file":"edit-profile.js","sourceRoot":"","sources":["../../src/elements/edit-profile.ts"],"names":[],"mappings":"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","sourcesContent":["import {css, html, LitElement} from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { localized, msg, str } from '@lit/localize';\nimport { onSubmit, sharedStyles } from '@holochain-open-dev/elements';\n\nimport '@holochain-open-dev/elements/dist/elements/select-avatar.js';\nimport {Profile} from \"../bindings/profilesAlt.types\";\n\n\n\n//import \"@shoelace-style/shoelace/dist/components/avatar/avatar.js\";\n//import \"@shoelace-style/shoelace/dist/components/button/button.js\";\n//import \"@shoelace-style/shoelace/dist/components/icon/icon.js\";\n//import \"@shoelace-style/shoelace/dist/components/input/input.js\";\n//import \"@shoelace-style/shoelace/dist/components/radio/radio.js\";\n//import \"@shoelace-style/shoelace/dist/components/radio-group/radio-group.js\";\n//import \"@shoelace-style/shoelace/dist/components/tooltip/tooltip.js\";\n\n\n\nconst MIN_NICKNAME_LENGTH = 2\n\n\n/**\n * @fires save-profile - Fired when the save profile button is clicked\n */\n@localized()\n@customElement('profiles-edit-profile')\nexport class EditProfile extends LitElement {\n\n\n /** The profile to be edited. */\n @property({ type: Object })\n profile: Profile | undefined;\n\n\n /** -- Methods -- */\n\n /**\n * Seperate Mailgun token from other fields as we don't want it to be saved in Profiles\n */\n async fireSaveProfile(formFields: Record<string, string>) {\n console.log(\"fireSaveProfile()\", formFields);\n const nickname = formFields['nickname'];\n delete formFields['nickname'];\n\n const fields = {}\n //fields['email'] = formFields['email'];\n fields['avatar'] = formFields['avatar']? formFields['avatar'] : \"\";\n fields['lang'] = formFields['option']? formFields['option'] : \"\";\n\n\n /** */\n this.dispatchEvent(\n new CustomEvent<Profile>('save-profile', {\n detail: {nickname, fields} as Profile,\n bubbles: true,\n composed: true,\n })\n );\n\n }\n\n\n /** */\n async handleLangChange(_e: any) {\n //console.log({langChangeEvent: e});\n const langRadioGroup = this.shadowRoot!.getElementById(\"langRadioGroup\") as any;\n console.log({langRadioGroup});\n const lang = langRadioGroup.value;\n console.log(\"handleLangChange: lang =\", lang);\n this.dispatchEvent(new CustomEvent('lang-selected', { detail: lang, bubbles: true, composed: true }));\n }\n\n\n /** */\n render() {\n console.log(\"<profiles-edit-profile>.render()\", this.profile);\n\n /** */\n return html`\n <form id=\"profile-form\" class=\"column\"\n ${onSubmit(fields => /*await*/ this.fireSaveProfile(fields))}>\n \n <div class=\"row\"\n style=\"justify-content: center; align-self: start; margin-bottom: 16px; width: 100%;\">\n <select-avatar\n style=\"cursor:pointer\"\n name=\"avatar\"\n .value=${this.profile?.fields['avatar'] || undefined}\n ></select-avatar>\n <label for=\"nickname\">Nickname:</label>\n <input\n type=\"text\"\n name=\"nickname\"\n .label=${msg('Nickname')}\n required\n minLength=${MIN_NICKNAME_LENGTH}\n .value=${this.profile?.nickname || ''}\n .helpText=${msg(str`Min. ${MIN_NICKNAME_LENGTH} characters`)}\n style=\"margin-left: 16px;\"\n >\n </div>\n \n <div class=\"row\" style=\"justify-content: center; margin-bottom: 8px; align-self: start;\" >\n <span style=\"font-size:18px;padding-right:10px;\">${msg('Language')}:</span>\n <sl-radio-group id=\"langRadioGroup\" @click=\"${this.handleLangChange}\" .value=${this.profile?.fields['lang']}>\n <sl-radio value=\"en\">🇬🇧</sl-radio>\n <sl-radio value=\"fr-fr\">🇫🇷</sl-radio>\n </sl-radio-group>\n </div>\n \n <div class=\"row\" style=\"margin-top: 8px;\">\n <button style=\"flex: 1;\" variant=\"primary\" type=\"submit\"\n >${msg('Save Profile')}\n </button>\n </div>\n </form>\n `;\n }\n\n\n static styles = [sharedStyles, css`\n\n sl-radio {\n font-size: larger;\n }\n .small-margin {\n margin-top: 6px;\n }\n .big-margin {\n margin-top: 23px;\n }\n\n .fill {\n flex: 1;\n height: 100%;\n }\n\n .title {\n font-size: 20px;\n }\n\n .center-content {\n align-items: center;\n justify-content: center;\n }\n\n .placeholder {\n color: rgba(0, 0, 0, 0.7);\n }\n\n .label {\n color: var(--mdc-text-field-label-ink-color, rgba(0, 0, 0, 0.6));\n font-family: var(\n --mdc-typography-caption-font-family,\n var(--mdc-typography-font-family, Roboto, sans-serif)\n );\n font-size: var(--mdc-typography-caption-font-size, 0.79rem);\n font-weight: var(--mdc-typography-caption-font-weight, 400);\n }\n\n .flex-scrollable-parent {\n position: relative;\n display: flex;\n flex: 1;\n }\n\n .flex-scrollable-container {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n }\n\n .flex-scrollable-x {\n max-width: 100%;\n overflow-x: auto;\n }\n .flex-scrollable-y {\n max-height: 100%;\n overflow-y: auto;\n }`];\n}\n"]}
1
+ {"version":3,"file":"edit-profile.js","sourceRoot":"","sources":["../../src/elements/edit-profile.ts"],"names":[],"mappings":"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","sourcesContent":["import {css, html, LitElement} from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { localized, msg, str } from '@lit/localize';\nimport { onSubmit, sharedStyles } from '@holochain-open-dev/elements';\n\nimport '@holochain-open-dev/elements/dist/elements/select-avatar.js';\nimport {Profile} from \"../bindings/profilesAlt.types\";\n\n\n\n//import \"@shoelace-style/shoelace/dist/components/avatar/avatar.js\";\n//import \"@shoelace-style/shoelace/dist/components/button/button.js\";\n//import \"@shoelace-style/shoelace/dist/components/icon/icon.js\";\n//import \"@shoelace-style/shoelace/dist/components/input/input.js\";\n//import \"@shoelace-style/shoelace/dist/components/radio/radio.js\";\n//import \"@shoelace-style/shoelace/dist/components/radio-group/radio-group.js\";\n//import \"@shoelace-style/shoelace/dist/components/tooltip/tooltip.js\";\n\n\n\nconst MIN_NICKNAME_LENGTH = 2\n\n\n/**\n * @fires save-profile - Fired when the save profile button is clicked\n */\n@localized()\n@customElement('profiles-edit-profile')\nexport class EditProfile extends LitElement {\n\n\n /** The profile to be edited. */\n @property({ type: Object })\n profile: Profile | undefined;\n\n\n /** -- Methods -- */\n\n /**\n * Seperate Mailgun token from other fields as we don't want it to be saved in Profiles\n */\n async fireSaveProfile(formFields: Record<string, string>) {\n console.log(\"fireSaveProfile()\", formFields);\n const nickname = formFields['nickname'];\n delete formFields['nickname'];\n\n const fields = {}\n //fields['email'] = formFields['email'];\n fields['avatar'] = formFields['avatar']? formFields['avatar'] : \"\";\n fields['lang'] = formFields['option']? formFields['option'] : \"\";\n\n\n /** */\n this.dispatchEvent(\n new CustomEvent<Profile>('save-profile', {\n detail: {nickname, fields} as Profile,\n bubbles: true,\n composed: true,\n })\n );\n\n }\n\n\n /** */\n async handleLangChange(_e: any) {\n //console.log({langChangeEvent: e});\n const langRadioGroup = this.shadowRoot!.getElementById(\"langRadioGroup\") as any;\n console.log({langRadioGroup});\n const lang = langRadioGroup.value;\n console.log(\"handleLangChange: lang =\", lang);\n this.dispatchEvent(new CustomEvent('lang-selected', { detail: lang, bubbles: true, composed: true }));\n }\n\n\n /** */\n render() {\n console.log(\"<profiles-edit-profile>.render()\", this.profile);\n\n /** */\n return html`\n <form id=\"profile-form\" class=\"column\"\n ${onSubmit(fields => /*await*/ this.fireSaveProfile(fields))}>\n \n <div class=\"row\"\n style=\"justify-content: center; align-self: start; margin-bottom: 16px; width: 100%;\">\n <select-avatar\n style=\"cursor:pointer\"\n name=\"avatar\"\n .value=${this.profile?.fields['avatar'] || undefined}\n ></select-avatar>\n <label for=\"nickname\">Nickname:</label>\n <input\n type=\"text\"\n name=\"nickname\"\n .label=${msg('Nickname')}\n required\n minLength=${MIN_NICKNAME_LENGTH}\n .value=${this.profile?.nickname || ''}\n .helpText=${msg(str`Min. ${MIN_NICKNAME_LENGTH} characters`)}\n style=\"margin-left: 16px;\"\n >\n </div>\n \n <div class=\"row\" style=\"justify-content: center; margin-bottom: 8px; align-self: start;\" >\n <span style=\"font-size:18px;padding-right:10px;\">${msg('Language')}:</span>\n <sl-radio-group id=\"langRadioGroup\" @click=${this.handleLangChange} .value=${this.profile?.fields['lang']}>\n <sl-radio value=\"en\">🇬🇧</sl-radio>\n <sl-radio value=\"fr-fr\">🇫🇷</sl-radio>\n </sl-radio-group>\n </div>\n \n <div class=\"row\" style=\"margin-top: 8px;\">\n <button style=\"flex: 1;\" variant=\"primary\" type=\"submit\"\n >${msg('Save Profile')}\n </button>\n </div>\n </form>\n `;\n }\n\n\n static styles = [sharedStyles, css`\n\n sl-radio {\n font-size: larger;\n }\n .small-margin {\n margin-top: 6px;\n }\n .big-margin {\n margin-top: 23px;\n }\n\n .fill {\n flex: 1;\n height: 100%;\n }\n\n .title {\n font-size: 20px;\n }\n\n .center-content {\n align-items: center;\n justify-content: center;\n }\n\n .placeholder {\n color: rgba(0, 0, 0, 0.7);\n }\n\n .label {\n color: var(--mdc-text-field-label-ink-color, rgba(0, 0, 0, 0.6));\n font-family: var(\n --mdc-typography-caption-font-family,\n var(--mdc-typography-font-family, Roboto, sans-serif)\n );\n font-size: var(--mdc-typography-caption-font-size, 0.79rem);\n font-weight: var(--mdc-typography-caption-font-weight, 400);\n }\n\n .flex-scrollable-parent {\n position: relative;\n display: flex;\n flex: 1;\n }\n\n .flex-scrollable-container {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n }\n\n .flex-scrollable-x {\n max-width: 100%;\n overflow-x: auto;\n }\n .flex-scrollable-y {\n max-height: 100%;\n overflow-y: auto;\n }`];\n}\n"]}
package/dist/index.d.ts CHANGED
@@ -2,7 +2,9 @@ export * from "./bindings/profiles.types";
2
2
  export * from "./bindings/profiles.proxy";
3
3
  export * from "./profiles.zvm";
4
4
  export * from "./bindings/profilesAlt.proxy";
5
+ export * from "./profilesAlt.perspective";
5
6
  export * from "./profilesAlt.zvm";
7
+ export * from "./profilesAlt.dvm";
6
8
  export * from "./elements/edit-profile";
7
9
  export * from "./profiles.dvm";
8
10
  export * from "./utils";
package/dist/index.js CHANGED
@@ -2,7 +2,9 @@ export * from "./bindings/profiles.types";
2
2
  export * from "./bindings/profiles.proxy";
3
3
  export * from "./profiles.zvm";
4
4
  export * from "./bindings/profilesAlt.proxy";
5
+ export * from "./profilesAlt.perspective";
5
6
  export * from "./profilesAlt.zvm";
7
+ export * from "./profilesAlt.dvm";
6
8
  export * from "./elements/edit-profile";
7
9
  export * from "./profiles.dvm";
8
10
  export * from "./utils";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAA;AACzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,gBAAgB,CAAA;AAE9B,cAAc,8BAA8B,CAAA;AAC5C,cAAc,mBAAmB,CAAA;AAEjC,cAAc,yBAAyB,CAAA;AACvC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,SAAS,CAAA","sourcesContent":["export * from \"./bindings/profiles.types\"\nexport * from \"./bindings/profiles.proxy\"\nexport * from \"./profiles.zvm\"\n\nexport * from \"./bindings/profilesAlt.proxy\"\nexport * from \"./profilesAlt.zvm\"\n\nexport * from \"./elements/edit-profile\"\nexport * from \"./profiles.dvm\"\nexport * from \"./utils\"\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAA;AACzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,gBAAgB,CAAA;AAE9B,cAAc,8BAA8B,CAAA;AAC5C,cAAc,2BAA2B,CAAA;AACzC,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AAEjC,cAAc,yBAAyB,CAAA;AACvC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,SAAS,CAAA","sourcesContent":["export * from \"./bindings/profiles.types\"\nexport * from \"./bindings/profiles.proxy\"\nexport * from \"./profiles.zvm\"\n\nexport * from \"./bindings/profilesAlt.proxy\"\nexport * from \"./profilesAlt.perspective\"\nexport * from \"./profilesAlt.zvm\"\nexport * from \"./profilesAlt.dvm\"\n\nexport * from \"./elements/edit-profile\"\nexport * from \"./profiles.dvm\"\nexport * from \"./utils\"\n"]}
@@ -35,7 +35,7 @@ export class ProfilesZvm extends ZomeViewModel {
35
35
  //profile_ahs: this._profile_ahs,
36
36
  };
37
37
  }
38
- getMyProfile() { return this._profiles[this.cell.agentId.b64]; }
38
+ getMyProfile() { return this._profiles[this.cell.address.agentId.b64]; }
39
39
  getProfile(agent) { return this._profiles[agent]; }
40
40
  //getProfileHash(agent: AgentPubKeyB64): ActionHashB64 | undefined {return this._profile_ahs[agent]}
41
41
  getAgents() { return Object.keys(this._profiles); }
@@ -108,12 +108,12 @@ export class ProfilesZvm extends ZomeViewModel {
108
108
  /** */
109
109
  async createMyProfile(profile) {
110
110
  /*const record =*/ await this.zomeProxy.createProfile(profile);
111
- this.storeProfile(this.cell.agentId.b64, profile);
111
+ this.storeProfile(this.cell.address.agentId.b64, profile);
112
112
  }
113
113
  /** */
114
114
  async updateMyProfile(profile) {
115
115
  /*const record =*/ await this.zomeProxy.updateProfile(profile);
116
- this.storeProfile(this.cell.agentId.b64, profile);
116
+ this.storeProfile(this.cell.address.agentId.b64, profile);
117
117
  }
118
118
  }
119
119
  ProfilesZvm.ZOME_PROXY = ProfilesProxy;
@@ -1 +1 @@
1
- {"version":3,"file":"profiles.zvm.js","sourceRoot":"","sources":["../src/profiles.zvm.ts"],"names":[],"mappings":"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","sourcesContent":["import {ZomeViewModel} from \"@ddd-qc/lit-happ\";\nimport {Profile} from \"./bindings/profiles.types\";\nimport {AgentPubKeyB64, decodeHashFromBase64, encodeHashToBase64} from \"@holochain/client\";\nimport {ProfilesProxy} from \"./bindings/profiles.proxy\";\nimport {decode} from \"@msgpack/msgpack\";\n\n\n/** */\nexport interface ProfilesPerspective {\n /* AgentPubKeyB64 -> Profile */\n profiles: Record<AgentPubKeyB64, Profile>,\n ///* AgentPubKeyB64 -> Profile hash */\n //profile_ahs: Record<AgentPubKeyB64, ActionHashB64>,\n\n /** Nickname -> AgentPubKeyB64 */\n reversed: Record<string, AgentPubKeyB64>,\n}\n\n\n/**\n *\n */\nexport class ProfilesZvm extends ZomeViewModel {\n\n static readonly ZOME_PROXY = ProfilesProxy;\n get zomeProxy(): ProfilesProxy {return this._zomeProxy as ProfilesProxy;}\n\n\n /* */\n protected hasChanged(): boolean {\n // TODO\n return true;\n }\n\n\n /** */\n async initializePerspectiveOnline(): Promise<void> {\n await this.probeAllProfiles();\n }\n\n /** */\n probeAllInner() {\n this.probeAllProfiles();\n }\n\n /** -- Perspective -- */\n\n /* */\n get perspective(): ProfilesPerspective {\n return {\n profiles: this._profiles,\n reversed: this._reversed,\n //profile_ahs: this._profile_ahs,\n };\n }\n\n private _profiles: Record<AgentPubKeyB64, Profile> = {};\n //private _profile_ahs: Record<AgentPubKeyB64, ActionHashB64> = {};\n private _reversed: Record<string, AgentPubKeyB64> = {};\n\n\n getMyProfile(): Profile | undefined { return this._profiles[this.cell.agentId.b64] }\n\n getProfile(agent: AgentPubKeyB64): Profile | undefined {return this._profiles[agent]}\n\n //getProfileHash(agent: AgentPubKeyB64): ActionHashB64 | undefined {return this._profile_ahs[agent]}\n\n getAgents(): AgentPubKeyB64[] { return Object.keys(this._profiles)}\n\n getNames(): string[] { return Object.keys(this._reversed)}\n\n\n /** Dump perspective as JSON */\n exportPerspective(): string {\n //console.log(\"exportPerspective()\", perspMat);\n return JSON.stringify(this._profiles, null, 2);\n }\n\n\n /** */\n importPerspective(json: string, mapping?: Object) {\n const profiles = JSON.parse(json) as Record<AgentPubKeyB64, Profile>;\n for (const [pubKey, profileMat] of Object.entries(profiles)) {\n this.storeProfile(pubKey, profileMat);\n }\n }\n\n /** -- Methods -- */\n\n /* */\n findProfiles(names: string[]): AgentPubKeyB64[] {\n let res = []\n for (const name of names) {\n if (this._reversed[name]) {\n res.push(this._reversed[name])\n }\n }\n return res;\n }\n\n\n /** */\n async probeAllProfiles(): Promise<Record<AgentPubKeyB64, Profile>> {\n let allAgents;\n /** Attempt a retry on fail as this can create an entry (path anchor) and generate a 'head has moved' error */\n try {\n allAgents = await this.zomeProxy.getAgentsWithProfile();\n } catch(e) {\n allAgents = await this.zomeProxy.getAgentsWithProfile();\n }\n for (const agentPubKey of allAgents) {\n const maybeProfile = await this.zomeProxy.getAgentProfile(agentPubKey);\n if (!maybeProfile) {\n continue;\n }\n const profile: Profile = decode((maybeProfile.entry as any).Present.entry) as Profile;\n this.storeProfile(encodeHashToBase64(agentPubKey), profile);\n }\n this.notifySubscribers();\n return this._profiles;\n }\n\n\n /** */\n storeProfile(pubKeyB64: AgentPubKeyB64, profile: Profile) {\n this._profiles[pubKeyB64] = profile;\n this._reversed[profile.nickname] = pubKeyB64;\n this.notifySubscribers();\n }\n\n\n /** */\n async probeProfile(pubKeyB64: AgentPubKeyB64): Promise<Profile | undefined> {\n const maybeProfile = await this.zomeProxy.getAgentProfile(decodeHashFromBase64(pubKeyB64));\n console.log(\"probeProfile() maybeProfile\", maybeProfile);\n if (!maybeProfile) {\n return;\n }\n // const profileEntry: any = decode((maybeProfile.entry as any).Present.entry);\n // console.log(\"probeProfile() profileEntry\", profileEntry);\n //const profile: Profile = decode(profileEntry.record.entry.Present.entry) as Profile;\n const profile: Profile = decode((maybeProfile.entry as any).Present.entry) as Profile;\n console.log(\"probeProfile() profile\", profile);\n this.storeProfile(pubKeyB64, profile);\n return profile;\n }\n\n\n /** */\n async createMyProfile(profile: Profile): Promise<void> {\n /*const record =*/ await this.zomeProxy.createProfile(profile);\n this.storeProfile(this.cell.agentId.b64, profile);\n }\n\n\n /** */\n async updateMyProfile(profile: Profile): Promise<void> {\n /*const record =*/ await this.zomeProxy.updateProfile(profile);\n this.storeProfile(this.cell.agentId.b64, profile);\n }\n\n}\n"]}
1
+ {"version":3,"file":"profiles.zvm.js","sourceRoot":"","sources":["../src/profiles.zvm.ts"],"names":[],"mappings":"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","sourcesContent":["import {ZomeViewModel} from \"@ddd-qc/lit-happ\";\nimport {Profile} from \"./bindings/profiles.types\";\nimport {AgentPubKeyB64, decodeHashFromBase64, encodeHashToBase64} from \"@holochain/client\";\nimport {ProfilesProxy} from \"./bindings/profiles.proxy\";\nimport {decode} from \"@msgpack/msgpack\";\n\n\n/** */\nexport interface ProfilesPerspective {\n /* AgentPubKeyB64 -> Profile */\n profiles: Record<AgentPubKeyB64, Profile>,\n ///* AgentPubKeyB64 -> Profile hash */\n //profile_ahs: Record<AgentPubKeyB64, ActionHashB64>,\n\n /** Nickname -> AgentPubKeyB64 */\n reversed: Record<string, AgentPubKeyB64>,\n}\n\n\n/**\n *\n */\nexport class ProfilesZvm extends ZomeViewModel {\n\n static readonly ZOME_PROXY = ProfilesProxy;\n get zomeProxy(): ProfilesProxy {return this._zomeProxy as ProfilesProxy;}\n\n\n /* */\n protected hasChanged(): boolean {\n // TODO\n return true;\n }\n\n\n /** */\n async initializePerspectiveOnline(): Promise<void> {\n await this.probeAllProfiles();\n }\n\n /** */\n probeAllInner() {\n this.probeAllProfiles();\n }\n\n /** -- Perspective -- */\n\n /* */\n get perspective(): ProfilesPerspective {\n return {\n profiles: this._profiles,\n reversed: this._reversed,\n //profile_ahs: this._profile_ahs,\n };\n }\n\n private _profiles: Record<AgentPubKeyB64, Profile> = {};\n //private _profile_ahs: Record<AgentPubKeyB64, ActionHashB64> = {};\n private _reversed: Record<string, AgentPubKeyB64> = {};\n\n\n getMyProfile(): Profile | undefined { return this._profiles[this.cell.address.agentId.b64] }\n\n getProfile(agent: AgentPubKeyB64): Profile | undefined {return this._profiles[agent]}\n\n //getProfileHash(agent: AgentPubKeyB64): ActionHashB64 | undefined {return this._profile_ahs[agent]}\n\n getAgents(): AgentPubKeyB64[] { return Object.keys(this._profiles)}\n\n getNames(): string[] { return Object.keys(this._reversed)}\n\n\n /** Dump perspective as JSON */\n exportPerspective(): string {\n //console.log(\"exportPerspective()\", perspMat);\n return JSON.stringify(this._profiles, null, 2);\n }\n\n\n /** */\n importPerspective(json: string, mapping?: Object) {\n const profiles = JSON.parse(json) as Record<AgentPubKeyB64, Profile>;\n for (const [pubKey, profileMat] of Object.entries(profiles)) {\n this.storeProfile(pubKey, profileMat);\n }\n }\n\n /** -- Methods -- */\n\n /* */\n findProfiles(names: string[]): AgentPubKeyB64[] {\n let res = []\n for (const name of names) {\n if (this._reversed[name]) {\n res.push(this._reversed[name])\n }\n }\n return res;\n }\n\n\n /** */\n async probeAllProfiles(): Promise<Record<AgentPubKeyB64, Profile>> {\n let allAgents;\n /** Attempt a retry on fail as this can create an entry (path anchor) and generate a 'head has moved' error */\n try {\n allAgents = await this.zomeProxy.getAgentsWithProfile();\n } catch(e) {\n allAgents = await this.zomeProxy.getAgentsWithProfile();\n }\n for (const agentPubKey of allAgents) {\n const maybeProfile = await this.zomeProxy.getAgentProfile(agentPubKey);\n if (!maybeProfile) {\n continue;\n }\n const profile: Profile = decode((maybeProfile.entry as any).Present.entry) as Profile;\n this.storeProfile(encodeHashToBase64(agentPubKey), profile);\n }\n this.notifySubscribers();\n return this._profiles;\n }\n\n\n /** */\n storeProfile(pubKeyB64: AgentPubKeyB64, profile: Profile) {\n this._profiles[pubKeyB64] = profile;\n this._reversed[profile.nickname] = pubKeyB64;\n this.notifySubscribers();\n }\n\n\n /** */\n async probeProfile(pubKeyB64: AgentPubKeyB64): Promise<Profile | undefined> {\n const maybeProfile = await this.zomeProxy.getAgentProfile(decodeHashFromBase64(pubKeyB64));\n console.log(\"probeProfile() maybeProfile\", maybeProfile);\n if (!maybeProfile) {\n return;\n }\n // const profileEntry: any = decode((maybeProfile.entry as any).Present.entry);\n // console.log(\"probeProfile() profileEntry\", profileEntry);\n //const profile: Profile = decode(profileEntry.record.entry.Present.entry) as Profile;\n const profile: Profile = decode((maybeProfile.entry as any).Present.entry) as Profile;\n console.log(\"probeProfile() profile\", profile);\n this.storeProfile(pubKeyB64, profile);\n return profile;\n }\n\n\n /** */\n async createMyProfile(profile: Profile): Promise<void> {\n /*const record =*/ await this.zomeProxy.createProfile(profile);\n this.storeProfile(this.cell.address.agentId.b64, profile);\n }\n\n\n /** */\n async updateMyProfile(profile: Profile): Promise<void> {\n /*const record =*/ await this.zomeProxy.updateProfile(profile);\n this.storeProfile(this.cell.address.agentId.b64, profile);\n }\n\n}\n"]}
@@ -1,16 +1,18 @@
1
1
  import { ActionId, ActionIdMap, AgentId, AgentIdMap } from "@ddd-qc/cell-proxy";
2
2
  import { Profile } from "./bindings/profiles.types";
3
- import { Timestamp } from "@holochain/client";
3
+ import { ActionHashB64, AgentPubKeyB64, Timestamp } from "@holochain/client";
4
4
  /** */
5
- export interface ProfilesAltPerspectiveCore {
6
- profiles: ActionIdMap<[Profile, Timestamp]>;
7
- profileByAgent: AgentIdMap<ActionId>;
5
+ export interface ProfilesAltSnapshot {
6
+ all: [AgentPubKeyB64, ActionHashB64, Profile, Timestamp][];
8
7
  }
9
- export declare class ProfilesAltPerspective implements ProfilesAltPerspectiveCore {
8
+ /** */
9
+ export declare class ProfilesAltPerspective {
10
10
  profiles: ActionIdMap<[Profile, Timestamp]>;
11
11
  profileByAgent: AgentIdMap<ActionId>;
12
- /** Extra */
13
- private _agentByName;
12
+ /** -- Extra -- */
13
+ agentByName: Record<string, AgentId>;
14
+ /** -- Methods -- */
15
+ equals(_other: ProfilesAltPerspective): boolean;
14
16
  /** -- Getters -- */
15
17
  get agents(): AgentId[];
16
18
  get names(): string[];
@@ -22,6 +24,13 @@ export declare class ProfilesAltPerspective implements ProfilesAltPerspectiveCor
22
24
  getProfileTs(agent: AgentId | string): Timestamp | undefined;
23
25
  /** */
24
26
  getAgent(nickname: string): AgentId | undefined;
27
+ /** -- Memento -- */
28
+ /** TODO: deep copy */
29
+ makeSnapshot(): ProfilesAltSnapshot;
30
+ }
31
+ /** */
32
+ export declare class ProfilesAltPerspectiveMutable extends ProfilesAltPerspective {
33
+ get readonly(): ProfilesAltPerspective;
25
34
  /** -- Store -- */
26
35
  /** */
27
36
  storeProfile(profileAh: ActionId, profile: Profile, ts: Timestamp): void;
@@ -30,9 +39,8 @@ export declare class ProfilesAltPerspective implements ProfilesAltPerspectiveCor
30
39
  /** */
31
40
  unstoreAgentProfile(agentId: AgentId, profileAh: ActionId): void;
32
41
  /** -- Memento -- */
33
- /** TODO: deep copy */
34
- makeSnapshot(): ProfilesAltPerspectiveCore;
35
- restore(core: ProfilesAltPerspectiveCore): void;
42
+ /** */
43
+ restore(snapshot: ProfilesAltSnapshot): void;
36
44
  /** -- Generate -- */
37
45
  /** */
38
46
  generateRandomProfile(nickname: string, ts?: Timestamp, fields?: Record<string, string>): Promise<void>;
@@ -1,26 +1,23 @@
1
- import { ActionId, ActionIdMap, AgentId, AgentIdMap } from "@ddd-qc/cell-proxy";
2
- // export interface ProfilesAltPerspectiveExtra {
3
- // /** Nickname -> AgentId */
4
- // agentByName: Record<string, AgentId>,
5
- // }
6
- //
7
- // export type ProfilesAltPerspectiveFull = ProfilesAltPerspectiveCore & ProfilesAltPerspectiveExtra;
1
+ import { ActionId, ActionIdMap, AgentId, AgentIdMap, assertAllDefined } from "@ddd-qc/cell-proxy";
2
+ /** */
8
3
  export class ProfilesAltPerspective {
9
4
  constructor() {
10
- /* Core */
5
+ /* ActionId -> Profile */
11
6
  this.profiles = new ActionIdMap();
7
+ /* AgentId -> ActionId */
12
8
  this.profileByAgent = new AgentIdMap();
13
- /** Extra */
14
- this._agentByName = {};
9
+ /** -- Extra -- */
10
+ /* Name -> AgentId */
11
+ this.agentByName = {};
12
+ }
13
+ /** -- Methods -- */
14
+ equals(_other) {
15
+ // TODO
16
+ return false;
15
17
  }
16
- // /* */
17
- // diff(core: ProfilesAltPerspectiveCore): boolean {
18
- // // TODO
19
- // return true;
20
- // }
21
18
  /** -- Getters -- */
22
19
  get agents() { return Array.from(this.profileByAgent.keys()); }
23
- get names() { return Object.keys(this._agentByName); }
20
+ get names() { return Object.keys(this.agentByName); }
24
21
  /** */
25
22
  getProfileAgent(profileId) {
26
23
  for (const [agentId, profId] of this.profileByAgent.entries()) {
@@ -33,7 +30,7 @@ export class ProfilesAltPerspective {
33
30
  /** */
34
31
  getProfile(agent) {
35
32
  if (typeof agent == "string") {
36
- agent = this._agentByName[agent];
33
+ agent = this.agentByName[agent];
37
34
  if (!agent) {
38
35
  return;
39
36
  }
@@ -53,7 +50,7 @@ export class ProfilesAltPerspective {
53
50
  /** */
54
51
  getProfileTs(agent) {
55
52
  if (typeof agent == "string") {
56
- agent = this._agentByName[agent];
53
+ agent = this.agentByName[agent];
57
54
  if (!agent) {
58
55
  return;
59
56
  }
@@ -63,58 +60,77 @@ export class ProfilesAltPerspective {
63
60
  return undefined;
64
61
  }
65
62
  const pair = this.profiles.get(profileAh);
63
+ if (!pair) {
64
+ return undefined;
65
+ }
66
66
  return pair[1];
67
67
  }
68
68
  /** */
69
69
  getAgent(nickname) {
70
- return this._agentByName[nickname];
70
+ return this.agentByName[nickname];
71
+ }
72
+ /** -- Memento -- */
73
+ /** TODO: deep copy */
74
+ makeSnapshot() {
75
+ let all = [];
76
+ for (const [agentId, profileAh] of this.profileByAgent.entries()) {
77
+ const pair = this.profiles.get(profileAh);
78
+ if (pair) {
79
+ all.push([agentId, profileAh, pair[0], pair[1]]);
80
+ }
81
+ }
82
+ /** */
83
+ return { all };
84
+ }
85
+ }
86
+ /** */
87
+ export class ProfilesAltPerspectiveMutable extends ProfilesAltPerspective {
88
+ get readonly() {
89
+ return this;
71
90
  }
72
91
  /** -- Store -- */
73
92
  /** */
74
93
  storeProfile(profileAh, profile, ts) {
75
- //console.log("ProfilesAltZvm.storeProfile()", profileAh, profile.nickname);
94
+ console.debug("ProfilesAltZvm.storeProfile()", profileAh.short, profile.nickname);
95
+ assertAllDefined(profileAh, profile, ts);
76
96
  this.profiles.set(profileAh, [profile, ts]);
77
97
  const agentId = this.getProfileAgent(profileAh);
78
98
  if (agentId) {
79
- this._agentByName[profile.nickname] = agentId;
99
+ this.agentByName[profile.nickname] = agentId;
80
100
  }
81
101
  }
82
102
  /** */
83
103
  storeAgentProfile(agentId, profileAh) {
84
- //console.log("ProfilesAltZvm.storeAgentProfile()", agentId, profileAh);
104
+ console.debug("ProfilesAltZvm.storeAgentProfile()", agentId.short, profileAh.short);
105
+ assertAllDefined(agentId, profileAh);
85
106
  this.profileByAgent.set(agentId, profileAh);
86
107
  const pair = this.profiles.get(profileAh);
87
108
  if (pair) {
88
- this._agentByName[pair[0].nickname] = agentId;
109
+ this.agentByName[pair[0].nickname] = agentId;
89
110
  }
90
111
  }
91
112
  /** */
92
113
  unstoreAgentProfile(agentId, profileAh) {
93
- //console.log("ProfilesAltZvm.unstoreAgentProfile()", agentId, profileAh);
114
+ console.debug("ProfilesAltZvm.unstoreAgentProfile()", agentId.short, profileAh.short);
115
+ assertAllDefined(agentId, profileAh);
94
116
  this.profileByAgent.delete(agentId);
95
117
  const pair = this.profiles.get(profileAh);
96
118
  if (pair) {
97
- delete this._agentByName[pair[0].nickname];
119
+ delete this.agentByName[pair[0].nickname];
98
120
  }
99
121
  }
100
122
  /** -- Memento -- */
101
- /** TODO: deep copy */
102
- makeSnapshot() {
103
- return {
104
- profiles: this.profiles,
105
- profileByAgent: this.profileByAgent,
106
- };
107
- }
108
- restore(core) {
123
+ /** */
124
+ restore(snapshot) {
109
125
  /** Clear */
110
126
  this.profiles.clear();
111
127
  this.profileByAgent.clear();
112
- this._agentByName = {};
113
- /** */
114
- for (const [agentId, profileAh] of core.profileByAgent.entries()) {
128
+ this.agentByName = {};
129
+ /** Store */
130
+ for (const [agent, profileB64, profile, ts] of snapshot.all) {
131
+ const agentId = new AgentId(agent);
132
+ const profileAh = new ActionId(profileB64);
115
133
  this.storeAgentProfile(agentId, profileAh);
116
- }
117
- for (const [profileAh, [profile, ts]] of core.profiles.entries()) {
118
134
  this.storeProfile(profileAh, profile, ts);
119
135
  }
120
136
  }
@@ -1 +1 @@
1
- {"version":3,"file":"profilesAlt.perspective.js","sourceRoot":"","sources":["../src/profilesAlt.perspective.ts"],"names":[],"mappings":"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","sourcesContent":["import {ActionId, ActionIdMap, AgentId, AgentIdMap} from \"@ddd-qc/cell-proxy\";\r\nimport {Profile} from \"./bindings/profiles.types\";\r\nimport {Timestamp} from \"@holochain/client\";\r\n\r\n/** */\r\nexport interface ProfilesAltPerspectiveCore {\r\n /* ActionId -> Profile */\r\n profiles: ActionIdMap<[Profile, Timestamp]>,\r\n /* AgentId -> ActionId */\r\n profileByAgent: AgentIdMap<ActionId>,\r\n}\r\n\r\n// export interface ProfilesAltPerspectiveExtra {\r\n// /** Nickname -> AgentId */\r\n// agentByName: Record<string, AgentId>,\r\n// }\r\n//\r\n// export type ProfilesAltPerspectiveFull = ProfilesAltPerspectiveCore & ProfilesAltPerspectiveExtra;\r\n\r\n\r\nexport class ProfilesAltPerspective implements ProfilesAltPerspectiveCore {\r\n\r\n /* Core */\r\n profiles: ActionIdMap<[Profile, Timestamp]> = new ActionIdMap();\r\n profileByAgent: AgentIdMap<ActionId> = new AgentIdMap();\r\n /** Extra */\r\n private _agentByName: Record<string, AgentId> = {};\r\n\r\n\r\n // /* */\r\n // diff(core: ProfilesAltPerspectiveCore): boolean {\r\n // // TODO\r\n // return true;\r\n // }\r\n\r\n\r\n /** -- Getters -- */\r\n\r\n get agents(): AgentId[] { return Array.from(this.profileByAgent.keys())}\r\n get names(): string[] { return Object.keys(this._agentByName)}\r\n\r\n /** */\r\n getProfileAgent(profileId: ActionId): AgentId | undefined {\r\n for (const [agentId, profId] of this.profileByAgent.entries()) {\r\n if (profileId.b64 == profId.b64) {\r\n return agentId;\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n\r\n /** */\r\n getProfile(agent: AgentId | string): Profile | undefined {\r\n if (typeof agent == \"string\") {\r\n agent = this._agentByName[agent];\r\n if (!agent) {\r\n return;\r\n }\r\n }\r\n const profileAh = this.profileByAgent.get(agent);\r\n //console.log(\"ProfilesAltZvm.getProfile()\", agent, profileAh);\r\n if (!profileAh) {\r\n return undefined;\r\n }\r\n const pair = this.profiles.get(profileAh);\r\n //console.log(\"ProfilesAltZvm.getProfile() pair\", pair);\r\n if (!pair) {\r\n return undefined;\r\n }\r\n return pair[0];\r\n }\r\n\r\n\r\n /** */\r\n getProfileTs(agent: AgentId | string): Timestamp | undefined {\r\n if (typeof agent == \"string\") {\r\n agent = this._agentByName[agent];\r\n if (!agent) {\r\n return;\r\n }\r\n }\r\n const profileAh = this.profileByAgent.get(agent);\r\n if (!profileAh) {\r\n return undefined;\r\n }\r\n const pair = this.profiles.get(profileAh);\r\n return pair[1];\r\n }\r\n\r\n /** */\r\n getAgent(nickname: string): AgentId | undefined {\r\n return this._agentByName[nickname];\r\n }\r\n\r\n\r\n /** -- Store -- */\r\n\r\n /** */\r\n storeProfile(profileAh: ActionId, profile: Profile, ts: Timestamp) {\r\n //console.log(\"ProfilesAltZvm.storeProfile()\", profileAh, profile.nickname);\r\n this.profiles.set(profileAh, [profile, ts]);\r\n const agentId = this.getProfileAgent(profileAh);\r\n if (agentId) {\r\n this._agentByName[profile.nickname] = agentId;\r\n }\r\n }\r\n\r\n /** */\r\n storeAgentProfile(agentId: AgentId, profileAh: ActionId) {\r\n //console.log(\"ProfilesAltZvm.storeAgentProfile()\", agentId, profileAh);\r\n this.profileByAgent.set(agentId, profileAh);\r\n const pair = this.profiles.get(profileAh);\r\n if (pair) {\r\n this._agentByName[pair[0].nickname] = agentId;\r\n }\r\n }\r\n\r\n /** */\r\n unstoreAgentProfile(agentId: AgentId, profileAh: ActionId) {\r\n //console.log(\"ProfilesAltZvm.unstoreAgentProfile()\", agentId, profileAh);\r\n this.profileByAgent.delete(agentId);\r\n const pair = this.profiles.get(profileAh);\r\n if (pair) {\r\n delete this._agentByName[pair[0].nickname];\r\n }\r\n }\r\n\r\n\r\n /** -- Memento -- */\r\n\r\n /** TODO: deep copy */\r\n makeSnapshot(): ProfilesAltPerspectiveCore {\r\n return {\r\n profiles: this.profiles,\r\n profileByAgent: this.profileByAgent,\r\n }\r\n }\r\n\r\n restore(core: ProfilesAltPerspectiveCore) {\r\n /** Clear */\r\n this.profiles.clear();\r\n this.profileByAgent.clear();\r\n this._agentByName = {};\r\n /** */\r\n for (const [agentId, profileAh] of core.profileByAgent.entries()) {\r\n this.storeAgentProfile(agentId, profileAh);\r\n }\r\n for (const [profileAh, [profile, ts]] of core.profiles.entries()) {\r\n this.storeProfile(profileAh, profile, ts);\r\n }\r\n }\r\n\r\n\r\n /** -- Generate -- */\r\n\r\n /** */\r\n async generateRandomProfile(nickname: string, ts?: Timestamp, fields?: Record<string, string>) {\r\n const agentId = await AgentId.random();\r\n const profileAh = await ActionId.random();\r\n const profile: Profile = {nickname, fields};\r\n this.storeAgentProfile(agentId, profileAh);\r\n this.storeProfile(profileAh, profile, ts? ts : 0);\r\n }\r\n\r\n}\r\n"]}
1
+ {"version":3,"file":"profilesAlt.perspective.js","sourceRoot":"","sources":["../src/profilesAlt.perspective.ts"],"names":[],"mappings":"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","sourcesContent":["import {ActionId, ActionIdMap, AgentId, AgentIdMap, assertAllDefined} from \"@ddd-qc/cell-proxy\";\r\nimport {Profile} from \"./bindings/profiles.types\";\r\nimport {ActionHashB64, AgentPubKeyB64, Timestamp} from \"@holochain/client\";\r\n\r\n\r\n/** */\r\nexport interface ProfilesAltSnapshot {\r\n all: [AgentPubKeyB64, ActionHashB64, Profile, Timestamp][];\r\n}\r\n\r\n\r\n/** */\r\nexport class ProfilesAltPerspective {\r\n /* ActionId -> Profile */\r\n profiles: ActionIdMap<[Profile, Timestamp]> = new ActionIdMap();\r\n /* AgentId -> ActionId */\r\n profileByAgent: AgentIdMap<ActionId> = new AgentIdMap();\r\n\r\n /** -- Extra -- */\r\n /* Name -> AgentId */\r\n agentByName: Record<string, AgentId> = {};\r\n\r\n\r\n /** -- Methods -- */\r\n\r\n equals(_other: ProfilesAltPerspective) {\r\n // TODO\r\n return false;\r\n }\r\n\r\n /** -- Getters -- */\r\n\r\n get agents(): AgentId[] { return Array.from(this.profileByAgent.keys())}\r\n get names(): string[] { return Object.keys(this.agentByName)}\r\n\r\n /** */\r\n getProfileAgent(profileId: ActionId): AgentId | undefined {\r\n for (const [agentId, profId] of this.profileByAgent.entries()) {\r\n if (profileId.b64 == profId.b64) {\r\n return agentId;\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n\r\n /** */\r\n getProfile(agent: AgentId | string): Profile | undefined {\r\n if (typeof agent == \"string\") {\r\n agent = this.agentByName[agent];\r\n if (!agent) {\r\n return;\r\n }\r\n }\r\n const profileAh = this.profileByAgent.get(agent);\r\n //console.log(\"ProfilesAltZvm.getProfile()\", agent, profileAh);\r\n if (!profileAh) {\r\n return undefined;\r\n }\r\n const pair = this.profiles.get(profileAh);\r\n //console.log(\"ProfilesAltZvm.getProfile() pair\", pair);\r\n if (!pair) {\r\n return undefined;\r\n }\r\n return pair[0];\r\n }\r\n\r\n\r\n /** */\r\n getProfileTs(agent: AgentId | string): Timestamp | undefined {\r\n if (typeof agent == \"string\") {\r\n agent = this.agentByName[agent];\r\n if (!agent) {\r\n return;\r\n }\r\n }\r\n const profileAh = this.profileByAgent.get(agent);\r\n if (!profileAh) {\r\n return undefined;\r\n }\r\n const pair = this.profiles.get(profileAh);\r\n if (!pair) {\r\n return undefined;\r\n }\r\n return pair[1];\r\n }\r\n\r\n /** */\r\n getAgent(nickname: string): AgentId | undefined {\r\n return this.agentByName[nickname];\r\n }\r\n\r\n\r\n /** -- Memento -- */\r\n\r\n /** TODO: deep copy */\r\n makeSnapshot(): ProfilesAltSnapshot {\r\n let all = [];\r\n for (const [agentId, profileAh] of this.profileByAgent.entries()) {\r\n const pair = this.profiles.get(profileAh);\r\n if (pair) {\r\n all.push([agentId, profileAh, pair[0], pair[1]])\r\n }\r\n }\r\n /** */\r\n return {all}\r\n }\r\n}\r\n\r\n\r\n/** */\r\nexport class ProfilesAltPerspectiveMutable extends ProfilesAltPerspective {\r\n\r\n get readonly(): ProfilesAltPerspective {\r\n return this;\r\n }\r\n\r\n /** -- Store -- */\r\n\r\n /** */\r\n storeProfile(profileAh: ActionId, profile: Profile, ts: Timestamp) {\r\n console.debug(\"ProfilesAltZvm.storeProfile()\", profileAh.short, profile.nickname);\r\n assertAllDefined(profileAh, profile, ts);\r\n this.profiles.set(profileAh, [profile, ts]);\r\n const agentId = this.getProfileAgent(profileAh);\r\n if (agentId) {\r\n this.agentByName[profile.nickname] = agentId;\r\n }\r\n }\r\n\r\n /** */\r\n storeAgentProfile(agentId: AgentId, profileAh: ActionId) {\r\n console.debug(\"ProfilesAltZvm.storeAgentProfile()\", agentId.short, profileAh.short);\r\n assertAllDefined(agentId, profileAh);\r\n this.profileByAgent.set(agentId, profileAh);\r\n const pair = this.profiles.get(profileAh);\r\n if (pair) {\r\n this.agentByName[pair[0].nickname] = agentId;\r\n }\r\n }\r\n\r\n /** */\r\n unstoreAgentProfile(agentId: AgentId, profileAh: ActionId) {\r\n console.debug(\"ProfilesAltZvm.unstoreAgentProfile()\", agentId.short, profileAh.short);\r\n assertAllDefined(agentId, profileAh);\r\n this.profileByAgent.delete(agentId);\r\n const pair = this.profiles.get(profileAh);\r\n if (pair) {\r\n delete this.agentByName[pair[0].nickname];\r\n }\r\n }\r\n\r\n\r\n /** -- Memento -- */\r\n\r\n /** */\r\n restore(snapshot: ProfilesAltSnapshot) {\r\n /** Clear */\r\n this.profiles.clear();\r\n this.profileByAgent.clear();\r\n this.agentByName = {};\r\n /** Store */\r\n for (const [agent, profileB64, profile, ts] of snapshot.all) {\r\n const agentId = new AgentId(agent);\r\n const profileAh = new ActionId(profileB64);\r\n this.storeAgentProfile(agentId, profileAh);\r\n this.storeProfile(profileAh, profile, ts);\r\n }\r\n }\r\n\r\n\r\n /** -- Generate -- */\r\n\r\n /** */\r\n async generateRandomProfile(nickname: string, ts?: Timestamp, fields?: Record<string, string>) {\r\n const agentId = await AgentId.random();\r\n const profileAh = await ActionId.random();\r\n const profile: Profile = {nickname, fields};\r\n this.storeAgentProfile(agentId, profileAh);\r\n this.storeProfile(profileAh, profile, ts? ts : 0);\r\n }\r\n\r\n}\r\n"]}
@@ -7,6 +7,7 @@ import { ProfilesAltPerspective } from "./profilesAlt.perspective";
7
7
  *
8
8
  */
9
9
  export declare class ProfilesAltZvm extends ZomeViewModelWithSignals {
10
+ /** -- Concret -- */
10
11
  static readonly ZOME_PROXY: typeof ProfilesAltProxy;
11
12
  get zomeProxy(): ProfilesAltProxy;
12
13
  protected hasChanged(): boolean;
@@ -14,8 +15,8 @@ export declare class ProfilesAltZvm extends ZomeViewModelWithSignals {
14
15
  initializePerspectiveOnline(): Promise<void>;
15
16
  /** */
16
17
  probeAllInner(): void;
17
- /** -- Perspective -- */
18
18
  get perspective(): ProfilesAltPerspective;
19
+ /** -- */
19
20
  private _perspective;
20
21
  /** -- Getters -- */
21
22
  getMyProfile(): Profile | undefined;
@@ -3,20 +3,22 @@ import { decode } from "@msgpack/msgpack";
3
3
  import { ProfilesAltProxy } from "./bindings/profilesAlt.proxy";
4
4
  import { ProfilesLinkType } from "./bindings/profiles.integrity";
5
5
  import { ProfilesAltUnitEnum } from "./bindings/profilesAlt.integrity";
6
- import { ProfilesAltPerspective } from "./profilesAlt.perspective";
6
+ import { ProfilesAltPerspectiveMutable } from "./profilesAlt.perspective";
7
+ import { HoloHash } from "@holochain/client";
7
8
  /**
8
9
  *
9
10
  */
10
11
  export class ProfilesAltZvm extends ZomeViewModelWithSignals {
11
12
  constructor() {
13
+ /** -- Concret -- */
12
14
  super(...arguments);
13
- this._perspective = new ProfilesAltPerspective();
15
+ /** -- */
16
+ this._perspective = new ProfilesAltPerspectiveMutable();
14
17
  }
15
18
  get zomeProxy() { return this._zomeProxy; }
16
19
  /* */
17
20
  hasChanged() {
18
- // TODO
19
- return true;
21
+ return !this.perspective.equals(this._previousPerspective);
20
22
  }
21
23
  /** */
22
24
  async initializePerspectiveOnline() {
@@ -26,19 +28,17 @@ export class ProfilesAltZvm extends ZomeViewModelWithSignals {
26
28
  probeAllInner() {
27
29
  this.probeAllProfiles();
28
30
  }
29
- /** -- Perspective -- */
30
31
  /* */
31
32
  get perspective() {
32
- return this._perspective;
33
+ return this._perspective.readonly;
33
34
  }
34
35
  /** -- Getters -- */
35
36
  getMyProfile() {
36
- return this._perspective.getProfile(this.cell.agentId);
37
+ return this._perspective.getProfile(this.cell.address.agentId);
37
38
  }
38
39
  /** -- Signals -- */
39
40
  /** */
40
41
  async handleLinkPulse(pulse, _from) {
41
- /** */
42
42
  switch (pulse.link_type) {
43
43
  case ProfilesLinkType.PrefixPath:
44
44
  case ProfilesLinkType.PathToAgent:
@@ -83,7 +83,7 @@ export class ProfilesAltZvm extends ZomeViewModelWithSignals {
83
83
  }
84
84
  /** */
85
85
  async findProfile(agentId) {
86
- const maybeProfilePair = await this.zomeProxy.findProfile(agentId.hash);
86
+ const maybeProfilePair = await this.zomeProxy.findProfile(new HoloHash(agentId.hash));
87
87
  console.log("findProfile()", agentId, maybeProfilePair);
88
88
  if (!maybeProfilePair) {
89
89
  return;
@@ -92,30 +92,30 @@ export class ProfilesAltZvm extends ZomeViewModelWithSignals {
92
92
  }
93
93
  /** */
94
94
  async createMyProfile(profile) {
95
- const _ah = await this.zomeProxy.createProfile([profile, this.cell.agentId.hash]);
95
+ const _ah = await this.zomeProxy.createProfile([profile, new HoloHash(this.cell.address.agentId.hash)]);
96
96
  }
97
97
  /** */
98
98
  async updateMyProfile(profile) {
99
- const _ah = await this.zomeProxy.updateProfile([profile, this.cell.agentId.hash]);
99
+ const _ah = await this.zomeProxy.updateProfile([profile, new HoloHash(this.cell.address.agentId.hash)]);
100
100
  }
101
101
  /** */
102
102
  async createProfile(profile, agentId) {
103
- const _ah = await this.zomeProxy.createProfile([profile, agentId.hash]);
103
+ const _ah = await this.zomeProxy.createProfile([profile, new HoloHash(agentId.hash)]);
104
104
  }
105
105
  /** */
106
106
  async updateProfile(profile, agentId) {
107
- const _ah = await this.zomeProxy.updateProfile([profile, agentId.hash]);
107
+ const _ah = await this.zomeProxy.updateProfile([profile, new HoloHash(agentId.hash)]);
108
108
  }
109
109
  /** -- Import / Export -- */
110
110
  /** Dump perspective as JSON */
111
111
  export() {
112
112
  //console.log("exportPerspective()", perspMat);
113
- const core = this._perspective.makeSnapshot();
114
- return JSON.stringify(core, null, 2);
113
+ const snapshot = this._perspective.makeSnapshot();
114
+ return JSON.stringify(snapshot, null, 2);
115
115
  }
116
116
  /** */
117
117
  import(json, _canPublish) {
118
- const core = JSON.parse(json);
118
+ const snapshot = JSON.parse(json);
119
119
  // if (canPublish) {
120
120
  // for (const [profileAh, [profile, _ts]] of perspective.profiles.entries()) {
121
121
  // await this.createProfile(profile, agentId);
@@ -123,7 +123,7 @@ export class ProfilesAltZvm extends ZomeViewModelWithSignals {
123
123
  // return;
124
124
  // }
125
125
  /** */
126
- this._perspective.restore(core);
126
+ this._perspective.restore(snapshot);
127
127
  }
128
128
  }
129
129
  ProfilesAltZvm.ZOME_PROXY = ProfilesAltProxy;
@@ -1 +1 @@
1
- {"version":3,"file":"profilesAlt.zvm.js","sourceRoot":"","sources":["../src/profilesAlt.zvm.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ActionId,\n AgentId,\n EntryId,\n LinkPulseMat,\n StateChangeType,\n ZomeViewModelWithSignals\n} from \"@ddd-qc/lit-happ\";\nimport {Profile} from \"./bindings/profiles.types\";\nimport {decode} from \"@msgpack/msgpack\";\nimport {ProfilesAltProxy} from \"./bindings/profilesAlt.proxy\";\nimport {EntryPulseMat} from \"@ddd-qc/lit-happ/dist/ZomeViewModelWithSignals\";\nimport {ProfilesLinkType} from \"./bindings/profiles.integrity\";\nimport {ProfilesAltUnitEnum} from \"./bindings/profilesAlt.integrity\";\nimport {ProfilesAltPerspective, ProfilesAltPerspectiveCore} from \"./profilesAlt.perspective\";\n\n\n/**\n *\n */\nexport class ProfilesAltZvm extends ZomeViewModelWithSignals {\n\n static readonly ZOME_PROXY = ProfilesAltProxy;\n get zomeProxy(): ProfilesAltProxy {return this._zomeProxy as ProfilesAltProxy;}\n\n\n /* */\n protected hasChanged(): boolean {\n // TODO\n return true;\n }\n\n\n /** */\n async initializePerspectiveOnline(): Promise<void> {\n await this.probeAllProfiles();\n }\n\n /** */\n probeAllInner() {\n this.probeAllProfiles();\n }\n\n /** -- Perspective -- */\n\n /* */\n get perspective(): ProfilesAltPerspective {\n return this._perspective;\n }\n\n private _perspective: ProfilesAltPerspective = new ProfilesAltPerspective();\n\n\n /** -- Getters -- */\n\n getMyProfile(): Profile | undefined {\n return this._perspective.getProfile(this.cell.agentId);\n }\n\n\n\n /** -- Signals -- */\n\n /** */\n async handleLinkPulse(pulse: LinkPulseMat, _from: AgentId): Promise<void> {\n /** */\n switch (pulse.link_type) {\n case ProfilesLinkType.PrefixPath:\n case ProfilesLinkType.PathToAgent: {\n const agentEh = new EntryId(pulse.target.b64);\n const agentId = AgentId.from(agentEh);\n if (pulse.state != StateChangeType.Delete) {\n await this.findProfile(agentId);\n }\n }\n break;\n case ProfilesLinkType.AgentToProfile: {\n const agentEh = new EntryId(pulse.base.b64); // Make sure its an EntryHash\n const agentId = AgentId.from(agentEh);\n const profileAh = ActionId.from(pulse.target);\n if (pulse.state == StateChangeType.Delete) {\n this._perspective.unstoreAgentProfile(agentId, profileAh)\n } else {\n this._perspective.storeAgentProfile(agentId, profileAh)\n }\n }\n break;\n }\n }\n\n\n /** */\n async handleEntryPulse(pulse: EntryPulseMat, _from: AgentId) {\n switch (pulse.entryType) {\n case ProfilesAltUnitEnum.Profile:\n const profile = decode(pulse.bytes) as Profile;\n if (pulse.state != StateChangeType.Delete) {\n this._perspective.storeProfile(pulse.ah, profile, pulse.ts);\n }\n break;\n }\n }\n\n\n /** -- Methods -- */\n\n /** */\n async probeAllProfiles()/*: Promise<Record<AgentPubKeyB64, ProfileMat>>*/ {\n await this.zomeProxy.probeProfiles();\n }\n\n\n /** */\n async findProfile(agentId: AgentId): Promise<Profile | undefined> {\n const maybeProfilePair = await this.zomeProxy.findProfile(agentId.hash);\n console.log(\"findProfile()\", agentId, maybeProfilePair);\n if (!maybeProfilePair) {\n return;\n }\n return maybeProfilePair[1];\n }\n\n\n /** */\n async createMyProfile(profile: Profile): Promise<void> {\n const _ah = await this.zomeProxy.createProfile([profile, this.cell.agentId.hash]);\n }\n\n\n /** */\n async updateMyProfile(profile: Profile): Promise<void> {\n const _ah = await this.zomeProxy.updateProfile([profile, this.cell.agentId.hash]);\n }\n\n\n /** */\n async createProfile(profile: Profile, agentId: AgentId): Promise<void> {\n const _ah = await this.zomeProxy.createProfile([profile, agentId.hash]);\n }\n\n\n /** */\n async updateProfile(profile: Profile, agentId: AgentId): Promise<void> {\n const _ah = await this.zomeProxy.updateProfile([profile, agentId.hash]);\n }\n\n\n /** -- Import / Export -- */\n\n /** Dump perspective as JSON */\n export(): string {\n //console.log(\"exportPerspective()\", perspMat);\n const core = this._perspective.makeSnapshot();\n return JSON.stringify(core, null, 2);\n }\n\n\n /** */\n import(json: string, _canPublish: boolean) {\n const core = JSON.parse(json) as ProfilesAltPerspectiveCore;\n // if (canPublish) {\n // for (const [profileAh, [profile, _ts]] of perspective.profiles.entries()) {\n // await this.createProfile(profile, agentId);\n // }\n // return;\n // }\n /** */\n this._perspective.restore(core)\n }\n}\n"]}
1
+ {"version":3,"file":"profilesAlt.zvm.js","sourceRoot":"","sources":["../src/profilesAlt.zvm.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ActionId,\n AgentId,\n EntryId,\n LinkPulseMat,\n StateChangeType,\n ZomeViewModelWithSignals\n} from \"@ddd-qc/lit-happ\";\nimport {Profile} from \"./bindings/profiles.types\";\nimport {decode} from \"@msgpack/msgpack\";\nimport {ProfilesAltProxy} from \"./bindings/profilesAlt.proxy\";\nimport {EntryPulseMat} from \"@ddd-qc/lit-happ/dist/ZomeViewModelWithSignals\";\nimport {ProfilesLinkType} from \"./bindings/profiles.integrity\";\nimport {ProfilesAltUnitEnum} from \"./bindings/profilesAlt.integrity\";\nimport {\n ProfilesAltPerspective,\n ProfilesAltPerspectiveMutable,\n ProfilesAltSnapshot\n} from \"./profilesAlt.perspective\";\nimport {HoloHash} from \"@holochain/client\";\n\n\n/**\n *\n */\nexport class ProfilesAltZvm extends ZomeViewModelWithSignals {\n\n /** -- Concret -- */\n\n static readonly ZOME_PROXY = ProfilesAltProxy;\n get zomeProxy(): ProfilesAltProxy {return this._zomeProxy as ProfilesAltProxy;}\n\n\n /* */\n protected hasChanged(): boolean {\n return !this.perspective.equals(this._previousPerspective as ProfilesAltPerspective);\n }\n\n\n /** */\n async initializePerspectiveOnline(): Promise<void> {\n await this.probeAllProfiles();\n }\n\n\n /** */\n probeAllInner() {\n this.probeAllProfiles();\n }\n\n\n /* */\n get perspective(): ProfilesAltPerspective {\n return this._perspective.readonly;\n }\n\n\n /** -- */\n\n private _perspective: ProfilesAltPerspectiveMutable = new ProfilesAltPerspectiveMutable();\n\n\n /** -- Getters -- */\n\n getMyProfile(): Profile | undefined {\n return this._perspective.getProfile(this.cell.address.agentId);\n }\n\n\n\n /** -- Signals -- */\n\n /** */\n async handleLinkPulse(pulse: LinkPulseMat, _from: AgentId): Promise<void> {\n switch (pulse.link_type) {\n case ProfilesLinkType.PrefixPath:\n case ProfilesLinkType.PathToAgent: {\n const agentEh = new EntryId(pulse.target.b64);\n const agentId = AgentId.from(agentEh);\n if (pulse.state != StateChangeType.Delete) {\n await this.findProfile(agentId);\n }\n }\n break;\n case ProfilesLinkType.AgentToProfile: {\n const agentEh = new EntryId(pulse.base.b64); // Make sure its an EntryHash\n const agentId = AgentId.from(agentEh);\n const profileAh = ActionId.from(pulse.target);\n if (pulse.state == StateChangeType.Delete) {\n this._perspective.unstoreAgentProfile(agentId, profileAh)\n } else {\n this._perspective.storeAgentProfile(agentId, profileAh)\n }\n }\n break;\n }\n }\n\n\n /** */\n async handleEntryPulse(pulse: EntryPulseMat, _from: AgentId) {\n switch (pulse.entryType) {\n case ProfilesAltUnitEnum.Profile:\n const profile = decode(pulse.bytes) as Profile;\n if (pulse.state != StateChangeType.Delete) {\n this._perspective.storeProfile(pulse.ah, profile, pulse.ts);\n }\n break;\n }\n }\n\n\n /** -- Methods -- */\n\n /** */\n async probeAllProfiles()/*: Promise<Record<AgentPubKeyB64, ProfileMat>>*/ {\n await this.zomeProxy.probeProfiles();\n }\n\n\n /** */\n async findProfile(agentId: AgentId): Promise<Profile | undefined> {\n const maybeProfilePair = await this.zomeProxy.findProfile(new HoloHash(agentId.hash));\n console.log(\"findProfile()\", agentId, maybeProfilePair);\n if (!maybeProfilePair) {\n return;\n }\n return maybeProfilePair[1];\n }\n\n\n /** */\n async createMyProfile(profile: Profile): Promise<void> {\n const _ah = await this.zomeProxy.createProfile([profile, new HoloHash(this.cell.address.agentId.hash)]);\n }\n\n\n /** */\n async updateMyProfile(profile: Profile): Promise<void> {\n const _ah = await this.zomeProxy.updateProfile([profile, new HoloHash(this.cell.address.agentId.hash)]);\n }\n\n\n /** */\n async createProfile(profile: Profile, agentId: AgentId): Promise<void> {\n const _ah = await this.zomeProxy.createProfile([profile, new HoloHash(agentId.hash)]);\n }\n\n\n /** */\n async updateProfile(profile: Profile, agentId: AgentId): Promise<void> {\n const _ah = await this.zomeProxy.updateProfile([profile, new HoloHash(agentId.hash)]);\n }\n\n\n /** -- Import / Export -- */\n\n /** Dump perspective as JSON */\n export(): string {\n //console.log(\"exportPerspective()\", perspMat);\n const snapshot = this._perspective.makeSnapshot();\n return JSON.stringify(snapshot, null, 2);\n }\n\n\n /** */\n import(json: string, _canPublish: boolean) {\n const snapshot = JSON.parse(json) as ProfilesAltSnapshot;\n // if (canPublish) {\n // for (const [profileAh, [profile, _ts]] of perspective.profiles.entries()) {\n // await this.createProfile(profile, agentId);\n // }\n // return;\n // }\n /** */\n this._perspective.restore(snapshot)\n }\n}\n"]}
package/dist/utils.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- import { Profile as ProfileMat } from "./bindings/profiles.types";
2
1
  import { TemplateResult } from "lit";
3
2
  import { AgentId } from "@ddd-qc/cell-proxy";
3
+ import { Profile as ProfileMat } from "./bindings/profiles.types";
4
4
  /** */
5
5
  export declare function getInitials(nickname: string): string;
6
6
  /** */
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,IAAI,EAAiB,MAAM,KAAK,CAAC;AAGzC,MAAM;AACN,MAAM,UAAU,WAAW,CAAC,QAAgB;IACxC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACtD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;QAClB,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;KACrE;SAAM;QACH,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KACxC;IACD,OAAO,QAAQ,CAAC;AACpB,CAAC;AAID,MAAM;AACN,MAAM,UAAU,YAAY,CAAC,GAAY,EAAE,OAAoB;IAC3D,IAAI,CAAC,OAAO,EAAE;QACV,OAAO,CAAC,IAAI,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAC;QACnD,OAAO,GAAG,EAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAe,CAAC;KAC7D;IACD,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,MAAM,GACR,SAAS,CAAA,CAAC,CAAC,IAAI,CAAA;;yBAEE,SAAS;;aAErB,CAAC,CAAC,CAAC,IAAI,CAAA;oEACgD,QAAQ;iBAC3D,CAAC;IACd,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAC7B,CAAC","sourcesContent":["import {Profile as ProfileMat} from \"./bindings/profiles.types\";\nimport {html, TemplateResult} from \"lit\";\nimport {AgentId} from \"@ddd-qc/cell-proxy\";\n\n/** */\nexport function getInitials(nickname: string): string {\n const names = nickname.split(' ');\n let initials = names[0].substring(0, 1).toUpperCase();\n if (names.length > 1) {\n initials += names[names.length - 1].substring(0, 1).toUpperCase();\n } else {\n initials += names[0].substring(1, 2);\n }\n return initials;\n}\n\n\n\n/** */\nexport function agent2avatar(key: AgentId, profile?: ProfileMat): [ProfileMat, TemplateResult<1>] {\n if (!profile) {\n console.warn(\"agent2avatar() No Profile arg\", key);\n profile = {nickname: \"unknown\", fields: {}} as ProfileMat;\n }\n const initials = getInitials(profile.nickname);\n const avatarUrl = profile.fields['avatar'];\n const avatar =\n avatarUrl? html`\n <sl-avatar class=\"activityAvatar\" style=\"box-shadow: 1px 1px 1px 1px rgba(130, 122, 122, 0.88)\">\n <img src=${avatarUrl}>\n </sl-avatar> \n ` : html`\n <sl-avatar class=\"activityAvatar\" shape=\"circle\" initials=${initials} color-scheme=\"Accent2\"></sl-avatar>\n `;\n return [profile, avatar];\n}\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAiB,MAAM,KAAK,CAAC;AAKzC,MAAM;AACN,MAAM,UAAU,WAAW,CAAC,QAAgB;IACxC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACtD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;QAClB,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;KACrE;SAAM;QACH,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KACxC;IACD,OAAO,QAAQ,CAAC;AACpB,CAAC;AAID,MAAM;AACN,MAAM,UAAU,YAAY,CAAC,GAAY,EAAE,OAAoB;IAC3D,IAAI,CAAC,OAAO,EAAE;QACV,OAAO,CAAC,IAAI,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAC;QACnD,OAAO,GAAG,EAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAe,CAAC;KAC7D;IACD,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,MAAM,GACR,SAAS,CAAA,CAAC,CAAC,IAAI,CAAA;;yBAEE,SAAS;;aAErB,CAAC,CAAC,CAAC,IAAI,CAAA;oEACgD,QAAQ;iBAC3D,CAAC;IACd,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAC7B,CAAC","sourcesContent":["import {html, TemplateResult} from \"lit\";\nimport {AgentId} from \"@ddd-qc/cell-proxy\";\nimport {Profile as ProfileMat} from \"./bindings/profiles.types\";\n\n\n/** */\nexport function getInitials(nickname: string): string {\n const names = nickname.split(' ');\n let initials = names[0].substring(0, 1).toUpperCase();\n if (names.length > 1) {\n initials += names[names.length - 1].substring(0, 1).toUpperCase();\n } else {\n initials += names[0].substring(1, 2);\n }\n return initials;\n}\n\n\n\n/** */\nexport function agent2avatar(key: AgentId, profile?: ProfileMat): [ProfileMat, TemplateResult<1>] {\n if (!profile) {\n console.warn(\"agent2avatar() No Profile arg\", key);\n profile = {nickname: \"unknown\", fields: {}} as ProfileMat;\n }\n const initials = getInitials(profile.nickname);\n const avatarUrl = profile.fields['avatar'];\n const avatar =\n avatarUrl? html`\n <sl-avatar class=\"activityAvatar\" style=\"box-shadow: 1px 1px 1px 1px rgba(130, 122, 122, 0.88)\">\n <img src=${avatarUrl}>\n </sl-avatar> \n ` : html`\n <sl-avatar class=\"activityAvatar\" shape=\"circle\" initials=${initials} color-scheme=\"Accent2\"></sl-avatar>\n `;\n return [profile, avatar];\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ddd-qc/profiles-dvm",
3
- "version": "0.26.10",
3
+ "version": "0.27.0",
4
4
  "description": "DnaViewModel implementation for the Profiles zome.",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",