Implement profile updates

zio/stable
Paul Frazee 2022-11-11 14:15:43 -06:00
parent fe52d19c48
commit 38ed9a7943
9 changed files with 24 additions and 33 deletions

View File

@ -138,29 +138,17 @@ export async function unfollow(store: RootStoreModel, followUri: string) {
export async function updateProfile(
store: RootStoreModel,
did: string,
modifyFn: (existing?: Profile.Record) => Profile.Record,
) {
// TODO NOW replaceme
const res = await store.api.app.bsky.actor.profile.list({
user: store.me.did || '',
user: did || '',
})
const existing = res.records[0]
if (existing) {
await store.api.app.bsky.actor.profile.put(
{
did: store.me.did || '',
rkey: new AtUri(existing.uri).rkey,
},
modifyFn(existing.value),
)
} else {
await store.api.app.bsky.actor.profile.create(
{
did: store.me.did || '',
},
modifyFn(),
)
}
await store.api.app.bsky.actor.updateProfile({
did: did || '',
...modifyFn(existing?.value),
})
}
export async function inviteToScene(

View File

@ -111,10 +111,7 @@ export class ProfileViewModel {
}
async updateProfile(fn: (existing?: Profile.Record) => Profile.Record) {
if (this.did !== this.rootStore.me.did) {
throw new Error('Not your profile!')
}
await apilib.updateProfile(this.rootStore, fn)
await apilib.updateProfile(this.rootStore, this.did, fn)
await this.refresh()
}

View File

@ -11770,6 +11770,9 @@ var methodSchemaDict = {
schema: {
type: "object",
properties: {
did: {
type: "string"
},
displayName: {
type: "string",
maxLength: 64

File diff suppressed because one or more lines are too long

View File

@ -7,6 +7,7 @@ export interface CallOptions {
encoding: 'application/json';
}
export interface InputSchema {
did?: string;
displayName?: string;
description?: string;
}

File diff suppressed because one or more lines are too long

View File

@ -43,7 +43,13 @@ export function Component({}: {}) {
handle: fullHandle,
})
// set the scene profile
// TODO
await store.api.app.bsky.actor
.updateProfile({
did: createSceneRes.data.did,
displayName,
description,
})
.catch(e => console.error(e)) // an error here is not critical
// follow the scene
await store.api.app.bsky.graph.follow
.create(

View File

@ -127,7 +127,7 @@ export const ProfileHeader = observer(function ProfileHeader({
if (isCreator) {
dropdownItems.push({
label: 'Edit Profile',
onPress: () => {}, // TODO
onPress: onPressEditProfile,
})
}
if (isMember) {

View File

@ -6,10 +6,8 @@ Paul's todo list
- Cursor behaviors on all views
- Update swipe behaviors: edge always goes back, leftmost always goes back, main connects to selector if present
- Onboarding flow
> Confirm email
- Confirm email
- Setup profile?
- Create scene
> Set profile during creation
- Onboarding
- Finish explainers
- Discover scenes view
@ -20,8 +18,6 @@ Paul's todo list
- User profile
- User
- Invite to scene
- Scene
> Edit profile
- Reply gating
- Composer
- View on post
@ -35,6 +31,6 @@ Paul's todo list
- Follows list
- Members list
- Bugs
> Auth token refresh seems broken
- Auth token refresh seems broken
- Check that sub components arent reloading too much
- Titles are getting screwed up (possibly swipe related)