Flatten threads: don't show reply button when appropriate
This CL also refactors the response interceptors to use the new
ThreadModel.
Fixed: twpowertools:160
Change-Id: I859e0fa1b8f5f4057bd66af3d167e4b21c6d12ed
diff --git a/src/models/StartupData.js b/src/models/StartupData.js
new file mode 100644
index 0000000..047c154
--- /dev/null
+++ b/src/models/StartupData.js
@@ -0,0 +1,41 @@
+import UserModel from './User.js';
+
+export default class StartupDataModel {
+ constructor(data) {
+ this.data = data ?? {};
+ }
+
+ static buildFromCCDOM() {
+ const startupData =
+ document.querySelector('html')?.getAttribute?.('data-startup');
+ if (!startupData) {
+ console.warn('Haven\'t found CC startup data.');
+ return null;
+ }
+
+ let startup;
+ try {
+ startup = JSON.parse(startupData);
+ } catch (error) {
+ console.warn('Haven\'t been able to parse CC startup data.');
+ }
+
+ return new StartupDataModel(startup);
+ }
+
+ getRawUser() {
+ return this.data[1]?.[1] ?? null;
+ }
+
+ getAuthUser() {
+ return this.data[2]?.[1] ?? '0';
+ }
+
+ getRawForumsInfo() {
+ return this.data[1]?.[2] ?? null;
+ }
+
+ getCurrentUserModel() {
+ return new UserModel(this.getRawUser(), this);
+ }
+}