Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ユーザー名が正しく表示されない #52

Closed
blhsrwznrghfzpr opened this issue Jan 8, 2020 · 16 comments · Fixed by #56
Closed

ユーザー名が正しく表示されない #52

blhsrwznrghfzpr opened this issue Jan 8, 2020 · 16 comments · Fixed by #56
Labels
bug Something isn't working

Comments

@blhsrwznrghfzpr
Copy link
Collaborator

現象

インスタンス名が https://hogedon.com のときに、トゥートID or URLに https://hogedon.com/web/statuses/012345678901234567 の形式で toot を取得すると、
その toot が他所のインスタンスの toot でも、
ユーザー名が @[email protected] に固定されてしまっています。

原因

https://github.com/hidao80/mastogetter/blob/4750bd7571272b8292050be20323bf118aa8c234/js/common.js#L96
にて、入力されたインスタンス名を表示にしようしていますが、
おそらく API レスポンスから正しい値を取得する必要があります。

@blhsrwznrghfzpr
Copy link
Collaborator Author

インスタンス qiitadon.com から他所のインスタンスの toot を取ると
account.acct[email protected] のようになってて使えそうだけど、
今度は qiitadon.com インスタンスの account.acctusername のみになってしまう…

@hidao80 hidao80 added the bug Something isn't working label Jan 8, 2020
@hidao80
Copy link
Member

hidao80 commented Jan 8, 2020

@blhsrwznrghfzpr 仕様です(つよき)
現段階では、「トゥートID or URL」テキストボックスではインスタンスを判別していません

「トゥートID or URL」テキストボックス利用時は左隣の「インスタンス名」欄に別途インスタンスのURLを入力してください。
「インスタンス名」テキストボックスのデフォルト値は「https://qiitadon.com」です。

【二つのインスタンスからトゥートをまとめている例】
image
改善案、プルリク募集中です。#37 も見てね。

@hidao80
Copy link
Member

hidao80 commented Jan 8, 2020

@blhsrwznrghfzpr あ゛あ゛あ゛そういうことか!
まとめ表示画面で全てのユーザのインスタンスがuserid@qiitadonになるということですね!
それは純然たるバグです。直しましょう。

@yumetodo
Copy link
Contributor

yumetodo commented Jan 8, 2020

MastodonのTLから来ました。

個人的にはaccount.acctを見るよりはurlからインスタンス名引っ張るほうがいいんじゃないかという気がしています。

@hidao80
Copy link
Member

hidao80 commented Jan 8, 2020

と思ったけど、FTLに流れているものは当該インスタンスに保存されているので、「userid@当該インスタンス」が付くのが正常な動作です。

ぜんぜんわからない。俺は雰囲気で mastodon をやっている。

@yumetodo
Copy link
Contributor

yumetodo commented Jan 8, 2020

@hidao80 それは自分の所属インスタンス視点での話であって、mastogetterとしてどうするかは別問題でしょう

@blhsrwznrghfzpr
Copy link
Collaborator Author

とりあえずURLなどからインスタンス名を引っ張る方針でPR考えてみます

@hidao80
Copy link
Member

hidao80 commented Jan 8, 2020

@yumetodo 現在、mastogetter ではまとめ情報を管理する URL の get パラメータに1つしかインスタンス URL を持つことができません。これは現段階の仕様です。

たしかに、mastogetter としてどうするかは別問題ですが、解決方法の検討もされていないのが現状です。
本 Issue で解決したい問題だと考えています。

@KEINOS
Copy link
Member

KEINOS commented Jan 8, 2020

んんん?? @[email protected] ??

そのアカウントあるけど、そこからトゥートしとらんのですが、どうなってんの?!

と思って検証してみたら、そういうことか。理解。

スクリーンショット 2020-01-09 1 00 32

Mastodon のバージョン互換もありそうだから、力技を使う方向なのかしら。となるとリクエスト数が多くなりそうな気配。

@yumetodo
Copy link
Contributor

yumetodo commented Jan 8, 2020

https://github.com/tootsuite/mastodon/blob/a6269b2f83e3eed1a8ab545f5756cd7b582075f5/spec/helpers/accounts_helper_spec.rb#L57-L65
image

とおもったんだけど、acctについてのテスト見てたらちょっと首かしげてます。(見てるところが違う・・・?

@yumetodo
Copy link
Contributor

yumetodo commented Jan 8, 2020

image
えっ、ここをくっつけようって話なんですがリクエスト数とか

現在、mastogetter ではまとめ情報を管理する URL の get パラメータに1つしかインスタンス URL を持つことができません。これは現段階の仕様です。

ってなんか話がすれ違っている・・・?

@yumetodo
Copy link
Contributor

yumetodo commented Jan 8, 2020

      let acct = account.get('acct');

      if (acct.indexOf('@') === -1 && localDomain) {
        acct = `${acct}@${localDomain}`;
      }

      displayName = <bdi><strong className='display-name__html' dangerouslySetInnerHTML={{ __html: account.get('display_name_html') }} /></bdi>;
      suffix      = <span className='display-name__account'>@{acct}</span>;

https://github.com/tootsuite/mastodon/blob/59fd622adc18cb094146f7cda1025782d505404e/app/javascript/mastodon/components/display_name.js#L73-L81

あっ

@yumetodo
Copy link
Contributor

yumetodo commented Jan 8, 2020

@KEINOS
Copy link
Member

KEINOS commented Jan 8, 2020

https://paiza.io/projects/BJFF9fHVUIyP6SL1xNromA @ paiza.IO

上記で、複数インスタンスの実際の API のレスポンスを見たところ、accountacct urldisplay_name を使うのが良い気がする。

@yumetodo
Copy link
Contributor

yumetodo commented Jan 8, 2020

あーびっくりした、acctって言われて。

なんかbreaking changeが割と最近入っている感もあるし

https://mastodon.cardina1.red/@lo48576/103448649823505013
あー表示だから変えてまえ! で変わったタイプの…… (つらそう)

ActivityPub 自体は @[email protected] 形式のアカウント表示を規定してないから、独自 API に頼るしかないんですね……
それにしても API の破壊的変更はひどい

みたいな指摘もあるので

<div class="box"><a class="display-name" href="${obj.account.url}" target="_blank">${obj.account.display_name}<span>@${obj.account.username}@${(new URL(obj.url)).hostname}</span></a>

みたいな感じでいいのでは。

image

対応ブラウザ問題なければPR投げますよ

@hidao80
Copy link
Member

hidao80 commented Jan 9, 2020

@yumetodo 明文化はしていませんが、IE と旧 edge は対応外で開発進めているので勧めてくださるとありがたいです! PR お待ちしています!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
4 participants