最近、Twitterのサードパーティークライアントが続々使用不可能となってから、たびたび代替として挙がるMarinDeck。
粗削りな部分は多々ありますが、それでも本家より何倍も使いやすいと感じています。
そんなMarinDeckのiOS版には、ある致命的なバグがあります。
それは、「スクロール中にスクロール場所が飛ぶ」というものです。40件ほどさかのぼるとすぐ発生するので、少しでも多くさかのぼろうとすると、見られないツイートが出てしまいます。
しかし、これは厳密にはMarinDeckのバグではなく、Webkitのバグだと考えられています(その証拠に、大元のウェブ版TweetDeckでも発生します)。
解決策
では、解決策はないのでしょうか?幸いなことに、MarinDeckにはカスタムJSを読み込める機能がありますから、それを使いましょう。
今回は、このコードを使います。
この下に、コピー用のコードを設けたので、コピーしてMarinDeckのカスタムJS(設定にあります、CSSではありません)に貼り付けてください。
コピー用コード(元のコードはMITライセンスです)
(function() {
'use strict';
function f() {
var increaseChirpSizes = function (column) {
column.UPWARD_SCROLL_CHIRP_BLOCK_SIZE = 1000; // default: 40
column.INFINITE_SCROLL_CHIRP_BLOCK_SIZE = 40; // default: 20
column.TARGET_COLUMN_CHIRP_LIMIT = 1000; // default: 40
};
var createColumn = window.TD.controller.columnManager.createColumn;
window.TD.controller.columnManager.createColumn = function(e, t) {
var column = createColumn(e, t);
try {
increaseChirpSizes(column);
return column;
} catch (err) {
console.error(err, column);
return column;
}
};
var columns = window.TD.controller.columnManager._aColumnIndex;
for (var index in columns) {
increaseChirpSizes(columns[index]);
}
}
(function g() {
if (window.TD && window.TD.ready) {
f();
} else {
setTimeout(g, 100);
}
})();
})();
// TweetDeck__Triple the amount of loaded tweets
// Copyright (c) 2018 pejuta (https://openuserjs.org/users/pejuta)
// Released under the MIT license
// https://opensource.org/licenses/mit-license.php
// Customized by mmahhi (http://mmahhi.s203.xrea.com/)
ちなみに元のコードとは、17~19行目が以下のように変わっています。上のコピー用コードはすでに変えてあるので、書き換えは不要です。
column.UPWARD_SCROLL_CHIRP_BLOCK_SIZE = 1000; // default: 40
column.INFINITE_SCROLL_CHIRP_BLOCK_SIZE = 40; // default: 20
column.TARGET_COLUMN_CHIRP_LIMIT = 1000; // default: 40
これでスクロールバグが発生しなくなっているはずです。皆さん、よいTwitter・MarinDeckライフをお過ごしください。
なぜこれで直るのか
おそらくですが、TweetDeckはスクロールするときに新しいツイートを読み込むと、その前に表示したものが消えるようになっています。そのタイミングの問題で、Webkitのみが自分のスクロール位置を見失っているのではないかと思います。
そこで、その処理を1000件読み込んだ時までさせないようにすることで、事実上消す処理を無効にし、バグを発生させなくしています。
補足として40件と指定されたコード2行目は、一度に読み込んで描写するツイートの数のようです。ツイートはどんな場合でも40件ずつ読み込まれるようなので、最大限読み込むようにしてあります。
最後に、私の記事が役に立ったという方は、Twitterのフォロー、よろしくお願いします!
関連記事