From aa4ac602360f06836ac69e7bc995a9f9ae33159d Mon Sep 17 00:00:00 2001 From: ririxi Date: Sun, 8 Sep 2024 23:01:39 +0200 Subject: [PATCH] fix(preprocess/contextmenu): adapt regex for `1.2.46` --- src/preprocess/preprocess.go | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/src/preprocess/preprocess.go b/src/preprocess/preprocess.go index fe43e3dcdf..3887b40582 100644 --- a/src/preprocess/preprocess.go +++ b/src/preprocess/preprocess.go @@ -561,25 +561,22 @@ func exposeAPIs_main(input string) string { return fmt.Sprintf("%s[Spicetify.ContextMenuV2.renderItems(),%s].flat()", submatches[1], submatches[2]) }) - croppedInput := utils.FindFirstMatch(input, `"context-menu".*value:"contextmenu"`)[0] + croppedInput := utils.FindFirstMatch(input, `\({menu:[^,]+,.*?triggerRef:[^,]+,[^}]*}\).*value:"contextmenu"`)[0] + fmt.Println(croppedInput) - react := utils.FindFirstMatch(croppedInput, `([\w_$]+)\.useRef`)[1] - var menu string - var trigger string - var target string - - menuCandidates := utils.FindMatch(croppedInput, `menu:([\w_$]+)`) - if len(menuCandidates) == 0 { - // v1.2.13 fix - menu = utils.FindFirstMatch(croppedInput, `([\w_$]+)=[\w_$]+\.menu,`)[1] - trigger = utils.FindFirstMatch(croppedInput, `([\w_$]+)=[\w_$]+\.trigger,`)[1] - target = utils.FindFirstMatch(croppedInput, `([\w_$]+)=[\w_$]+\.triggerRef,`)[1] + reactRef := utils.FindFirstMatch(croppedInput, `([\w_$]+)\.useRef`) + var react, menu, trigger, target string + if len(reactRef) == 1 { + react = reactRef[0] } else { - menu = menuCandidates[0][1] - trigger = utils.FindFirstMatch(croppedInput, `trigger:([\w_$]+)`)[1] - target = utils.FindFirstMatch(croppedInput, `triggerRef:([\w_$]+)`)[1] + react = reactRef[1] } + menuCandidates := utils.FindMatch(croppedInput, `menu:([\w_$]+)`) + menu = menuCandidates[0][1] + trigger = utils.FindFirstMatch(croppedInput, `trigger:([\w_$]+)`)[1] + target = utils.FindFirstMatch(croppedInput, `triggerRef:([\w_$]+)`)[1] + utils.Replace(&input, `\(0,([\w_$]+)\.jsx\)\([\w_$]+\.[\w_$]+,\{value:"contextmenu"[^\}]+\}\)\}\)`, func(submatches ...string) string { return fmt.Sprintf("(0,%s.jsx)((Spicetify.ContextMenuV2._context||(Spicetify.ContextMenuV2._context=%s.createContext(null))).Provider,{value:{props:%s?.props,trigger:%s,target:%s},children:%s})", submatches[1], react, menu, trigger, target, submatches[0]) })