Handle actors search beginning with '@'
authorChocobozzz <me@florianbigard.com>
Mon, 17 Sep 2018 08:12:30 +0000 (10:12 +0200)
committerChocobozzz <me@florianbigard.com>
Mon, 17 Sep 2018 08:13:54 +0000 (10:13 +0200)
Something like @toto@example.com

server/controllers/api/search.ts
server/helpers/webfinger.ts

index 28a7a04cadc461142e1a5e13841ad7f02c827ef0..58851d0b549f21bda7b3682503a0f2cb87da4f66 100644 (file)
@@ -56,6 +56,9 @@ function searchVideoChannels (req: express.Request, res: express.Response) {
   const isURISearch = search.startsWith('http://') || search.startsWith('https://')
 
   const parts = search.split('@')
+
+  // Handle strings like @toto@example.com
+  if (parts.length === 3 && parts[0].length === 0) parts.shift()
   const isWebfingerSearch = parts.length === 2 && parts.every(p => p.indexOf(' ') === -1)
 
   if (isURISearch || isWebfingerSearch) return searchVideoChannelURI(search, isWebfingerSearch, res)
index 10fcec4622c9f1b6429cd0a048d6d28ab31cd1bc..156376943dafee006e73d8ff5d97dfd34681814c 100644 (file)
@@ -12,7 +12,10 @@ const webfinger = new WebFinger({
   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: ActorModel