+
+
+
+
+
+
+ {{ isFriend ? "Remove friend" : "Add friend" }}
+
+
@@ -62,7 +73,7 @@
(currentTab = e.target.value)"
+ @change="(e) => (currentTab = e.target.value)"
:value="currentTab"
>
@@ -133,7 +144,7 @@
v-if="showAddlinkModal"
size="sm"
:open="showAddlinkModal"
- @toggle="(e: any) => setAddLinkModal(e.target.open)"
+ @toggle="(e) => setAddLinkModal(e.target.open)"
>
setAddLinkModal(false)"
@@ -145,7 +156,7 @@
v-if="showJoinCommunityModal"
size="lg"
:open="showJoinCommunityModal"
- @toggle="(e: any) => setShowJoinCommunityModal(e.target.open)"
+ @toggle="(e) => setShowJoinCommunityModal(e.target.open)"
>
setShowJoinCommunityModal(false)"
@@ -156,7 +167,7 @@
setShowEditProfile(e.target.open)"
+ @toggle="(e) => setShowEditProfile(e.target.open)"
>
setShowEditProfile(false)"
@@ -196,13 +207,10 @@ export default defineComponent({
Avatar,
},
setup() {
- const appStore = useAppStore();
- const dataStore = useDataStore();
- const userStore = useUserStore();
return {
- appStore,
- dataStore,
- userStore,
+ appStore: useAppStore(),
+ dataStore: useDataStore(),
+ userStore: useUserStore(),
};
},
data() {
@@ -218,6 +226,9 @@ export default defineComponent({
editArea: null as any,
};
},
+ async created() {
+ this.userStore.getFriends();
+ },
beforeCreate() {
this.appStore.changeCurrentTheme("global");
},
@@ -229,6 +240,13 @@ export default defineComponent({
this.profile = await getProfile(this.did);
}
},
+ async toggleFriend() {
+ if (this.isFriend) {
+ await this.userStore.removeFriend({ did: this.did });
+ } else {
+ await this.userStore.addFriend({ did: this.did });
+ }
+ },
setAddLinkModal(value: boolean): void {
this.showAddlinkModal = value;
},
@@ -287,6 +305,12 @@ export default defineComponent({
},
},
computed: {
+ isFriend(): boolean {
+ return !!this.friends.find((did) => this.did === did);
+ },
+ friends() {
+ return this.userStore.friends;
+ },
hasHistory() {
return this.$router.options.history.state.back;
},
diff --git a/packages/components/src/components/avatar/Avatar.ts b/packages/components/src/components/avatar/Avatar.ts
index f01c4809e..45cbb6703 100644
--- a/packages/components/src/components/avatar/Avatar.ts
+++ b/packages/components/src/components/avatar/Avatar.ts
@@ -69,7 +69,7 @@ const styles = css`
}
[part="icon"] {
- --j-icon-size: calc(var(--j-avatar-size) * 0.6);
+ --j-icon-size: calc(var(--j-avatar-size) * 0.4);
}
[part="img"] {
diff --git a/packages/utils/api/friends.ts b/packages/utils/api/friends.ts
new file mode 100644
index 000000000..431086164
--- /dev/null
+++ b/packages/utils/api/friends.ts
@@ -0,0 +1,17 @@
+import { getAd4mClient } from "@perspect3vism/ad4m-connect/dist/utils";
+import { Ad4mClient } from "@perspect3vism/ad4m";
+
+export async function addFriend(did: string) {
+ const client: Ad4mClient = await getAd4mClient();
+ await client.runtime.addFriends([did]);
+}
+
+export async function removeFriend(did: string) {
+ const client: Ad4mClient = await getAd4mClient();
+ return await client.runtime.removeFriends([did]);
+}
+
+export async function getFriends() {
+ const client: Ad4mClient = await getAd4mClient();
+ return await client.runtime.friends();
+}