Upgrade to Pro — share decks privately, control downloads, hide ads and more …

UserScriptを直した話 / tokaidolug-nagoya-201803

unarist
March 03, 2018

UserScriptを直した話 / tokaidolug-nagoya-201803

MastodonのWebUI向けのUserScriptがMastodonの更新で正常に動作しなくなっていたので直した話。Reactの_reactRootContainerを通して中で抱えてるprop/stateにアクセスしたり。

東海道らぐ 2018年3月オフな集まり in 名古屋

## 題材にしたUserScript

:don: - Add tablet layout https://gist.github.com/unarist/71067609416aed633cf74eddb6feb725
Mastodon - Mobile Composer https://gist.github.com/unarist/08f56c49986d3b1775fe88bc918cac50

他にも多数のUserScriptをGistに転がしてあります。

Twemoji graphics by Twitter, Inc are licensed under CC-BY 4.0
https://creativecommons.org/licenses/by/4.0/

unarist

March 03, 2018
Tweet

More Decks by unarist

Other Decks in Programming

Transcript

  1. • 期限付きミュート • 自動 numeronym ※ internationalization → i18n みたいな変換を投稿内の全

    英字列に適用する • スラングに <abbr> つける • ウィンドウの下に投稿欄を出すやつ • 2カラムレイアウトにするやつ • 色んなURLをWebUIで開くやつ • 開発補助系 • ほかにもいっぱい
  2. • 期限付きミュート • 自動numeronym ※ internationalization → i18n みたいな変換を投稿内の全 英字列に適用する

    • スラングにabbrつける • ウィンドウの下に投稿欄を出すやつ • 2カラムレイアウトにするやつ • 色んなURLをWebUIで開くやつ • 開発補助系 • ほかにもいっぱい この辺の話をします
  3. Add tablet layout • 2カラム表示を実現 • これを使う際に投稿欄への 切り替えが面倒で MobileComposer を作った

    • window.innerWidth に介入 して、WebUI側での幅判定 をごまかす • いつも左にいる投稿欄は CSSで隠す
  4. Solution • 向こうがタイムラインに対する absolute とかで配置し てくれてればよかったが、現実は fixed = ウィンドウの 枠に対する位置指定

    • どうしようもない • 自分の height を調べて、その分 margin-bottom で投稿 ボタンを上にずらす
  5. Known issues • 案 – onclick で遷移させる(mention ボタンの判定が難しい) – 内部のフラグを書き換える(今はいいけど…)

    – 返信イベントを拾って遷移(拾えるのかわからん) • どれも微妙 • とはいえ不便なのでそのうちなんかします
  6. Conclusion • それはそれとして、UserScript や UserStyle でどこまで できるかという挑戦は面白い • 最近の目玉: React

    の内部にアクセスできた – router の操作(ページ遷移) – store の参照(投稿やアカウントのキャッシュ参照) – React の出力をいじるのは厳しい • ほどよい規模の作品を量産して JS の腕を磨く – 大抵の新作は旧作+ちょっとした工夫