Fix to auth of mutation ops

zio/stable
Paul Frazee 2022-10-03 11:17:12 -05:00
parent c7d7e152a0
commit 2058505bf1
6 changed files with 32 additions and 59 deletions

View File

@ -7,22 +7,21 @@
import AdxApi from '../../third-party/api'
import {ServiceClient} from '../../third-party/api/src/index'
import {AdxUri} from '../../third-party/uri'
import * as storage from './storage'
import {RootStoreModel} from '../models/root-store'
export function doPolyfill() {
AdxApi.xrpc.fetch = fetchHandler
}
export async function post(
adx: ServiceClient,
user: string,
store: RootStoreModel,
text: string,
replyToUri?: string,
) {
let reply
if (replyToUri) {
const replyToUrip = new AdxUri(replyToUri)
const parentPost = await adx.todo.social.post.get({
const parentPost = await store.api.todo.social.post.get({
nameOrDid: replyToUrip.host,
tid: replyToUrip.recordKey,
})
@ -33,8 +32,8 @@ export async function post(
}
}
}
return await adx.todo.social.post.create(
{did: user},
return await store.api.todo.social.post.create(
{did: store.me.did || ''},
{
text,
reply,
@ -43,9 +42,9 @@ export async function post(
)
}
export async function like(adx: ServiceClient, user: string, uri: string) {
return await adx.todo.social.like.create(
{did: user},
export async function like(store: RootStoreModel, uri: string) {
return await store.api.todo.social.like.create(
{did: store.me.did || ''},
{
subject: uri,
createdAt: new Date().toISOString(),
@ -53,17 +52,17 @@ export async function like(adx: ServiceClient, user: string, uri: string) {
)
}
export async function unlike(adx: ServiceClient, likeUri: string) {
export async function unlike(store: RootStoreModel, likeUri: string) {
const likeUrip = new AdxUri(likeUri)
return await adx.todo.social.like.delete({
return await store.api.todo.social.like.delete({
did: likeUrip.hostname,
tid: likeUrip.recordKey,
})
}
export async function repost(adx: ServiceClient, user: string, uri: string) {
return await adx.todo.social.repost.create(
{did: user},
export async function repost(store: RootStoreModel, uri: string) {
return await store.api.todo.social.repost.create(
{did: store.me.did || ''},
{
subject: uri,
createdAt: new Date().toISOString(),
@ -71,21 +70,17 @@ export async function repost(adx: ServiceClient, user: string, uri: string) {
)
}
export async function unrepost(adx: ServiceClient, repostUri: string) {
export async function unrepost(store: RootStoreModel, repostUri: string) {
const repostUrip = new AdxUri(repostUri)
return await adx.todo.social.repost.delete({
return await store.api.todo.social.repost.delete({
did: repostUrip.hostname,
tid: repostUrip.recordKey,
})
}
export async function follow(
adx: ServiceClient,
user: string,
subject: string,
) {
return await adx.todo.social.follow.create(
{did: user},
export async function follow(store: RootStoreModel, subject: string) {
return await store.api.todo.social.follow.create(
{did: store.me.did || ''},
{
subject,
createdAt: new Date().toISOString(),
@ -93,9 +88,9 @@ export async function follow(
)
}
export async function unfollow(adx: ServiceClient, followUri: string) {
export async function unfollow(store: RootStoreModel, followUri: string) {
const followUrip = new AdxUri(followUri)
return await adx.todo.social.follow.delete({
return await store.api.todo.social.follow.delete({
did: followUrip.hostname,
tid: followUrip.recordKey,
})

View File

@ -61,17 +61,13 @@ export class FeedViewItemModel implements GetFeedView.FeedItem {
async toggleLike() {
if (this.myState.like) {
await apilib.unlike(this.rootStore.api, this.myState.like)
await apilib.unlike(this.rootStore, this.myState.like)
runInAction(() => {
this.likeCount--
this.myState.like = undefined
})
} else {
const res = await apilib.like(
this.rootStore.api,
'did:test:alice',
this.uri,
)
const res = await apilib.like(this.rootStore, this.uri)
runInAction(() => {
this.likeCount++
this.myState.like = res.uri
@ -81,17 +77,13 @@ export class FeedViewItemModel implements GetFeedView.FeedItem {
async toggleRepost() {
if (this.myState.repost) {
await apilib.unrepost(this.rootStore.api, this.myState.repost)
await apilib.unrepost(this.rootStore, this.myState.repost)
runInAction(() => {
this.repostCount--
this.myState.repost = undefined
})
} else {
const res = await apilib.repost(
this.rootStore.api,
'did:test:alice',
this.uri,
)
const res = await apilib.repost(this.rootStore, this.uri)
runInAction(() => {
this.repostCount++
this.myState.repost = res.uri

View File

@ -106,17 +106,13 @@ export class PostThreadViewPostModel implements GetPostThread.Post {
async toggleLike() {
if (this.myState.like) {
await apilib.unlike(this.rootStore.api, this.myState.like)
await apilib.unlike(this.rootStore, this.myState.like)
runInAction(() => {
this.likeCount--
this.myState.like = undefined
})
} else {
const res = await apilib.like(
this.rootStore.api,
'did:test:alice',
this.uri,
)
const res = await apilib.like(this.rootStore, this.uri)
runInAction(() => {
this.likeCount++
this.myState.like = res.uri
@ -126,17 +122,13 @@ export class PostThreadViewPostModel implements GetPostThread.Post {
async toggleRepost() {
if (this.myState.repost) {
await apilib.unrepost(this.rootStore.api, this.myState.repost)
await apilib.unrepost(this.rootStore, this.myState.repost)
runInAction(() => {
this.repostCount--
this.myState.repost = undefined
})
} else {
const res = await apilib.repost(
this.rootStore.api,
'did:test:alice',
this.uri,
)
const res = await apilib.repost(this.rootStore, this.uri)
runInAction(() => {
this.repostCount++
this.myState.repost = res.uri

View File

@ -74,17 +74,13 @@ export class ProfileViewModel {
throw new Error('Not logged in')
}
if (this.myState.follow) {
await apilib.unfollow(this.rootStore.api, this.myState.follow)
await apilib.unfollow(this.rootStore, this.myState.follow)
runInAction(() => {
this.followersCount--
this.myState.follow = undefined
})
} else {
const res = await apilib.follow(
this.rootStore.api,
this.rootStore.me.did,
this.did,
)
const res = await apilib.follow(this.rootStore, this.did)
runInAction(() => {
this.followersCount++
this.myState.follow = res.uri

View File

@ -48,7 +48,7 @@ export function Component({replyTo}: {replyTo?: string}) {
return false
}
try {
await apilib.post(store.api, 'did:test:alice', text, replyTo)
await apilib.post(store, text, replyTo)
} catch (e: any) {
console.error(`Failed to create post: ${e.toString()}`)
setError(
@ -103,7 +103,7 @@ export function Component({replyTo}: {replyTo?: string}) {
start={{x: 0, y: 0}}
end={{x: 1, y: 1}}
style={styles.postBtn}>
<Text style={[s.white, s.f16, s.semiBold]}>Post</Text>
<Text style={[s.white, s.f16, s.bold]}>Post</Text>
</LinearGradient>
</TouchableOpacity>
</View>

View File

@ -14,8 +14,6 @@ Paul's todo list
- Disable badges for now
- Disable editing avi or banner
- More button
- Notifications view
- *
- Linking
- Web linking
- App linking