import { ActorModel } from '../models/activitypub/actor'
import { isTestInstance } from './core-utils'
import { isActivityPubUrlValid } from './custom-validators/activitypub/misc'
+import { WEBSERVER } from '../initializers/constants'
+import { MActorFull } from '../typings/models'
const webfinger = new WebFinger({
webfist_fallback: false,
request_timeout: 3000
})
-async function loadActorUrlOrGetFromWebfinger (uri: string) {
+async function loadActorUrlOrGetFromWebfinger (uriArg: string) {
+ // Handle strings like @toto@example.com
+ const uri = uriArg.startsWith('@') ? uriArg.slice(1) : uriArg
+
const [ name, host ] = uri.split('@')
+ let actor: MActorFull
+
+ if (!host || host === WEBSERVER.HOST) {
+ actor = await ActorModel.loadLocalByName(name)
+ } else {
+ actor = await ActorModel.loadByNameAndHost(name, host)
+ }
- const actor = await ActorModel.loadByNameAndHost(name, host)
if (actor) return actor.url
return getUrlFromWebfinger(uri)