Skip to content

Commit 472530f

Browse files
committed
feat: explicitly track Pro Search state
1 parent ba9b4fa commit 472530f

File tree

6 files changed

+56
-0
lines changed

6 files changed

+56
-0
lines changed

docs/changelog.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ Consider giving a star ⭐ on [Github](https://github.com/pnd280/complexity).
1010

1111
_Release date: 21th Sep, 2024_
1212

13+
- **NEW** | **EXPERIMENTAL**: Explicitly keep track of the Pro Search state (Prevent auto-toggling off).
14+
1315
- **FIX**: Fixed infinte initializing loop.
1416
- **FIX**: Fixed the Rewrite dropdown (Thread Message Sticky Toolbar) - html structure changed.
1517

src/content-script/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ function initUiUxTweaks() {
5151
UiTweaks.applySettingsAsHTMLAttrs(location);
5252

5353
UxTweaks.dropFileWithinThread(location);
54+
55+
UxTweaks.trackProSearchState();
5456
};
5557

5658
observe(window.location.href);

src/cplx-user-settings/CplxUserSettings.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ export default class CplxUserSettings {
1414
isFirstVisit: true,
1515
customTheme: {},
1616
defaultFocusMode: "internet",
17+
defaultProSearchState: false,
1718
generalSettings: {
1819
queryBoxSelectors: {
1920
focus: false,
@@ -34,6 +35,7 @@ export default class CplxUserSettings {
3435
noFileCreationOnPaste: false,
3536
fileDropableThreadWrapper: false,
3637
autoGenerateThreadTitle: false,
38+
trackProSearchState: false,
3739
},
3840
visualTweaks: {
3941
collapseEmptyThreadVisualColumns: false,

src/cplx-user-settings/GeneralSettings.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,15 @@ export default class GeneralSettings {
103103
description: "Treat the whole page as a dropzone for file uploads.",
104104
versionRelease: "0.0.1.0",
105105
},
106+
{
107+
id: "track-pro-search-state",
108+
label: "Track pro search state",
109+
settingKey: "trackProSearchState",
110+
description:
111+
"Explicitly keep track of the Pro Search state (Prevent auto-toggling off).",
112+
versionRelease: "0.0.4.0",
113+
experimental: true,
114+
},
106115
];
107116

108117
static visualTweaks: PopupSetting<

src/cplx-user-settings/types/cplx-user-settings.types.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ export const cplxUserSettingsSchema = z.object({
1919
schemaVersion: z.literal(packageData.version),
2020
isFirstVisit: z.boolean(),
2121
defaultFocusMode: WebAccessFocusSchema.nullable(),
22+
defaultProSearchState: z.boolean(),
2223
generalSettings: z.object({
2324
queryBoxSelectors: z.object({
2425
focus: z.boolean(),
@@ -39,6 +40,7 @@ export const cplxUserSettingsSchema = z.object({
3940
noFileCreationOnPaste: z.boolean(),
4041
fileDropableThreadWrapper: z.boolean(),
4142
autoGenerateThreadTitle: z.boolean(),
43+
trackProSearchState: z.boolean(),
4244
}),
4345
visualTweaks: z.object({
4446
collapseEmptyThreadVisualColumns: z.boolean(),

src/utils/UxTweaks.ts

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import { throttle } from "lodash-es";
22

33
import CplxUserSettings from "@/cplx-user-settings/CplxUserSettings";
4+
import DomObserver from "@/utils/DomObserver/DomObserver";
5+
import { DomSelectors } from "@/utils/DomSelectors";
46
import UiUtils from "@/utils/UiUtils";
57
import { whereAmI } from "@/utils/utils";
68

@@ -82,4 +84,41 @@ export default class UxTweaks {
8284
$(window).on("resize", handler);
8385
});
8486
}
87+
88+
static trackProSearchState() {
89+
if (!CplxUserSettings.get().generalSettings.qolTweaks.trackProSearchState)
90+
return;
91+
92+
const defaultProSearchState = CplxUserSettings.get().defaultProSearchState
93+
? "checked"
94+
: "unchecked";
95+
96+
const currentState = $(DomSelectors.QUERY_BOX.PRO_SEARCH_TOGGLE).attr(
97+
"data-state",
98+
);
99+
100+
if (currentState !== defaultProSearchState) {
101+
console.log("Overriding pro search state");
102+
$(DomSelectors.QUERY_BOX.PRO_SEARCH_TOGGLE).trigger("click");
103+
}
104+
105+
DomObserver.destroy("pro-search-state-tracker");
106+
107+
DomObserver.create("pro-search-state-tracker", {
108+
target: $(DomSelectors.QUERY_BOX.PRO_SEARCH_TOGGLE)[0],
109+
config: {
110+
attributes: true,
111+
attributeFilter: ["data-state"],
112+
},
113+
onAttrChange: (element) => {
114+
const state = element.getAttribute("data-state");
115+
116+
if (state == null) return;
117+
118+
CplxUserSettings.set(
119+
(draft) => (draft.defaultProSearchState = state === "checked"),
120+
);
121+
},
122+
});
123+
}
85124
}

0 commit comments

Comments
 (0)