class JobStatusNotifier { constructor(userId) { this.userId = userId; this.isInitialized = false; app.subscribeUser(this.userId).then((response) => { app.socket.on('PATCH', (patch) => {this.onPATCH(patch);}); }); app.getUser(this.userId).then((user) => { this.isInitialized = true; }); } onPATCH(patch) { if (!this.isInitialized) {return;} let filteredPatch; let jobId; let match; let operation; let re; re = new RegExp(`^/users/${this.userId}/jobs/([A-Za-z0-9]*)/status$`); filteredPatch = patch .filter((operation) => {return operation.op === 'replace';}) .filter((operation) => {return re.test(operation.path);}); for (operation of filteredPatch) { [match, jobId] = operation.path.match(re); app.flash(`[${app.data.users[this.userId].jobs[jobId].title}] New status: `, 'job'); } } }