h3poteto / fedistar

Multi-column Fediverse client for desktop
https://fedistar.net
GNU General Public License v3.0
128 stars 6 forks source link

Crash with webkit2gtk-2.40 #673

Closed h3poteto closed 1 year ago

h3poteto commented 1 year ago

Description

Sometimes fedistar crashes on webkit2gtk-2.40. It occurs only release build, I can't confirm it in development.

Error log

[Debug] prepending (index-29f3630140aa9f63.js, line 1)
[Error] TypeError: t.match is not a function. (In 't.match(a)', 't.match' is undefined)
        a5 (framework-73b8966a3c579ab0.js:9:69822)
        (anonymous function) (framework-73b8966a3c579ab0.js:9:70334)
        lH (framework-73b8966a3c579ab0.js:9:51356)
        uY (framework-73b8966a3c579ab0.js:9:90793)
        e (framework-73b8966a3c579ab0.js:9:111127)
        (anonymous function) (framework-73b8966a3c579ab0.js:9:111136)
        oI (framework-73b8966a3c579ab0.js:9:111648)
        oS (framework-73b8966a3c579ab0.js:9:95020)
        x (framework-73b8966a3c579ab0.js:33:1375)
        T (framework-73b8966a3c579ab0.js:33:1905)
[Error] TypeError: t.match is not a function. (In 't.match(a)', 't.match' is undefined)
        K (main-287049dd63aeb276.js:1:10155)
        fn (main-287049dd63aeb276.js:1:9232)
        componentDidCatch (main-287049dd63aeb276.js:1:7721)
        (anonymous function) (framework-73b8966a3c579ab0.js:9:70442)
        lH (framework-73b8966a3c579ab0.js:9:51356)
        uY (framework-73b8966a3c579ab0.js:9:90793)
        e (framework-73b8966a3c579ab0.js:9:111127)
        (anonymous function) (framework-73b8966a3c579ab0.js:9:111136)
        oI (framework-73b8966a3c579ab0.js:9:111648)
        oS (framework-73b8966a3c579ab0.js:9:95020)
        x (framework-73b8966a3c579ab0.js:33:1375)
        T (framework-73b8966a3c579ab0.js:33:1905)
[Error] A client-side exception has occurred, see here for more info: https://nextjs.org/docs/messages/client-side-exception-occurred
        K (main-287049dd63aeb276.js:1:10172)
        fn (main-287049dd63aeb276.js:1:9232)
        componentDidCatch (main-287049dd63aeb276.js:1:7721)
        (anonymous function) (framework-73b8966a3c579ab0.js:9:70442)
        lH (framework-73b8966a3c579ab0.js:9:51356)
        uY (framework-73b8966a3c579ab0.js:9:90793)
        e (framework-73b8966a3c579ab0.js:9:111127)
        (anonymous function) (framework-73b8966a3c579ab0.js:9:111136)
        oI (framework-73b8966a3c579ab0.js:9:111648)
        oS (framework-73b8966a3c579ab0.js:9:95020)
        x (framework-73b8966a3c579ab0.js:33:1375)
        T (framework-73b8966a3c579ab0.js:33:1905)
[Error] TypeError: t.match is not a function. (In 't.match(a)', 't.match' is undefined)
        a5 (framework-73b8966a3c579ab0.js:9:69822)
        (anonymous function) (framework-73b8966a3c579ab0.js:9:70334)
        lH (framework-73b8966a3c579ab0.js:9:51356)
        uY (framework-73b8966a3c579ab0.js:9:90793)
        e (framework-73b8966a3c579ab0.js:9:111127)
        (anonymous function) (framework-73b8966a3c579ab0.js:9:111136)
        oI (framework-73b8966a3c579ab0.js:9:111648)
        oS (framework-73b8966a3c579ab0.js:9:95020)
        x (framework-73b8966a3c579ab0.js:33:1375)
        T (framework-73b8966a3c579ab0.js:33:1905)
[Error] TypeError: t.match is not a function. (In 't.match(a)', 't.match' is undefined)
        K (main-287049dd63aeb276.js:1:10155)
        fn (main-287049dd63aeb276.js:1:9232)
        componentDidCatch (main-287049dd63aeb276.js:1:7721)
        (anonymous function) (framework-73b8966a3c579ab0.js:9:70442)
        lH (framework-73b8966a3c579ab0.js:9:51356)
        uY (framework-73b8966a3c579ab0.js:9:90793)
        e (framework-73b8966a3c579ab0.js:9:111127)
        (anonymous function) (framework-73b8966a3c579ab0.js:9:111136)
        oI (framework-73b8966a3c579ab0.js:9:111648)
        oS (framework-73b8966a3c579ab0.js:9:95020)
        x (framework-73b8966a3c579ab0.js:33:1375)
        T (framework-73b8966a3c579ab0.js:33:1905)
[Error] A client-side exception has occurred, see here for more info: https://nextjs.org/docs/messages/client-side-exception-occurred
        K (main-287049dd63aeb276.js:1:10172)
        fn (main-287049dd63aeb276.js:1:9232)
        componentDidCatch (main-287049dd63aeb276.js:1:7721)
        (anonymous function) (framework-73b8966a3c579ab0.js:9:70442)
        lH (framework-73b8966a3c579ab0.js:9:51356)
        uY (framework-73b8966a3c579ab0.js:9:90793)
        e (framework-73b8966a3c579ab0.js:9:111127)
        (anonymous function) (framework-73b8966a3c579ab0.js:9:111136)
        oI (framework-73b8966a3c579ab0.js:9:111648)
        oS (framework-73b8966a3c579ab0.js:9:95020)
        x (framework-73b8966a3c579ab0.js:33:1375)
        T (framework-73b8966a3c579ab0.js:33:1905)
[Error] Error rendering page:  – Error: Cancel rendering route

t.match is here: https://github.com/h3poteto/fedistar/blob/eb6a9c70bba60028281d670961fb2627b77ff692/src/utils/emojify.ts#L7

The compiled JS source is

        var Q = function(e) {
                let a = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [],
                    t = e;
                return a.map(e => {
                    let a = RegExp(":".concat(e.shortcode, ":"), "g"),
                        n = t.match(a);
                    if (!n)
                        return e;
                    let i = '<img draggable="false" class="emojione" alt="'.concat(e.shortcode, '" title="').concat(e.shortcode, '" src="').concat(e.url, '" />');
                    return t = t.replace(a, i), e
                }), t
            },

Probably, i18next translation is not completed https://github.com/h3poteto/fedistar/blob/eb6a9c70bba60028281d670961fb2627b77ff692/src/components/timelines/notification/Reaction.tsx#L55 so, emojify can't handle t("translation") object.

I confirmed that some translations are not working correctly. Some words are undefined, for example, the timeline title, add timeline menu, etc...

Environment

OS: Manjaro Linux with webkit2gtk-2.40 Fedistar: 1.2.4 Server: all

h3poteto commented 1 year ago

After I downgrade webkit2gtk to 2.38, it works fine.

h3poteto commented 1 year ago

Fixed with Tauri 1.3.0.