Implement mentions rendering
This commit is contained in:
parent
2058505bf1
commit
195d2f7d2b
7 changed files with 177 additions and 19 deletions
|
@ -6,9 +6,15 @@
|
|||
// import {ReactNativeStore} from './auth'
|
||||
import AdxApi from '../../third-party/api'
|
||||
import {ServiceClient} from '../../third-party/api/src/index'
|
||||
import {
|
||||
TextSlice,
|
||||
Entity as Entities,
|
||||
} from '../../third-party/api/src/types/todo/social/post'
|
||||
import {AdxUri} from '../../third-party/uri'
|
||||
import {RootStoreModel} from '../models/root-store'
|
||||
|
||||
type Entity = Entities[0]
|
||||
|
||||
export function doPolyfill() {
|
||||
AdxApi.xrpc.fetch = fetchHandler
|
||||
}
|
||||
|
@ -32,11 +38,13 @@ export async function post(
|
|||
}
|
||||
}
|
||||
}
|
||||
const entities = extractEntities(text)
|
||||
return await store.api.todo.social.post.create(
|
||||
{did: store.me.did || ''},
|
||||
{
|
||||
text,
|
||||
reply,
|
||||
entities,
|
||||
createdAt: new Date().toISOString(),
|
||||
},
|
||||
)
|
||||
|
@ -196,3 +204,20 @@ async function iterateAll(
|
|||
}
|
||||
} while (res.records.length === 100)
|
||||
}*/
|
||||
|
||||
function extractEntities(text: string): Entity[] | undefined {
|
||||
let match
|
||||
let ents: Entity[] = []
|
||||
const re = /(^|\s)@([a-zA-Z0-9\.-]+)(\b)/g
|
||||
while ((match = re.exec(text))) {
|
||||
ents.push({
|
||||
type: 'mention',
|
||||
value: match[2],
|
||||
index: [
|
||||
match.index + 1, // skip the (^|\s) but include the '@'
|
||||
match.index + 2 + match[2].length,
|
||||
],
|
||||
})
|
||||
}
|
||||
return ents.length > 0 ? ents : undefined
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue