Skip to content

Commit

Permalink
Fix userId issue
Browse files Browse the repository at this point in the history
  • Loading branch information
Baghdasaryan committed Aug 26, 2023
1 parent 7ea0ab9 commit 21aed22
Show file tree
Hide file tree
Showing 6 changed files with 24 additions and 46 deletions.
4 changes: 2 additions & 2 deletions src/models/postMessageActionModel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ export enum PostMessageAction {
UpdateRule,
UpdateRuleNew,
DeleteRules,
DeleteRuleById,
DeleteRule,
GetStorageRules,
GetRuleById,
GetRule,
EnableRule,
DissableRule,
Log,
Expand Down
5 changes: 1 addition & 4 deletions src/models/storageModel.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
export enum StorageKey {
ADD_RULE = 'addRule',
REMOVE_RULE = 'removeRule',
USER_ID = 'userId',
NEXT_ID = 'nextId',
IS_CLEAR = 'isCLeared',
// deprecated property
CONFIG = 'config',
};

export enum StorageItemType {
RULE = 'rule',
CONFIG = 'config'
}
4 changes: 2 additions & 2 deletions src/options/HOC/formHOC.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ const FormHOC = () => {
TrackService.trackEvent(`Rule Delete By ID Event`);
const { id } = this.state;
chrome.runtime.sendMessage({
action: PostMessageAction.DeleteRuleById, data: { id } },
action: PostMessageAction.DeleteRule, data: { id } },
() => (this.props as any).navigate('/')
);
};
Expand Down Expand Up @@ -260,7 +260,7 @@ const FormHOC = () => {
}
if(mode === FormMode.UPDATE) {
chrome.runtime.sendMessage({
action: PostMessageAction.GetRuleById,
action: PostMessageAction.GetRule,
data: {id: this.state.id},
}, ({ruleData}) => this.setState({ruleData}));
return;
Expand Down
2 changes: 1 addition & 1 deletion src/options/components/ruleList/ruleList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ export default () => {
const handleDelete = (ruleData) => {
TrackService.trackEvent(`${PageName[ruleData.pageType]} Rule Delete Event`);
chrome.runtime.sendMessage({
action: PostMessageAction.DeleteRuleById, data: {id: ruleData.id} },
action: PostMessageAction.DeleteRule, data: {id: ruleData.id} },
() => getData()
);
};
Expand Down
41 changes: 11 additions & 30 deletions src/serviceWorker/serviceWorker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@ import StorageService from 'services/StorageService';
import BSService from 'services/BrowserSupportService';
import InjectCodeService from 'services/InjectCodeService';
import BaseService from 'services/BaseService';
import MatcherService from 'src/services/MatcherService';
import config from 'src/options/formBuilder/config';
import { ListenerType } from 'services/ListenerService/ListenerService';
import { PostMessageAction } from 'models/postMessageActionModel';
import { IRuleData, PageType } from 'models/formFieldModel';
import { StorageKey } from 'models/storageModel';
import { excludedUrls } from 'options/constant';
import handleError from './errorHandler';
import MatcherService from 'src/services/MatcherService';
import config from 'src/options/formBuilder/config';
import 'services/WebRequestService';
import Rule = chrome.declarativeNetRequest.Rule;

Expand All @@ -27,10 +27,8 @@ class ServiceWorker extends BaseService {
};

onInstalled = async () => {
const config = await StorageService.getSingleItem(StorageKey.CONFIG);
if(!config) {
StorageService.set({[StorageKey.CONFIG]: {}});
}
// temp function
StorageService.remove(StorageKey.CONFIG);
// Temp function
// Add 'resourceTypes' to local storage rules
const ruleData = await StorageService.getRules();
Expand Down Expand Up @@ -81,16 +79,16 @@ class ServiceWorker extends BaseService {
try {
if(action === PostMessageAction.GetStorageRules) {
responseData = this.getStorageRules();
} else if(action === PostMessageAction.GetRuleById) {
responseData = this.getRuleById(data);
} else if(action === PostMessageAction.GetRule) {
responseData = this.getRule(data);
} else if(action === PostMessageAction.AddRule) {
responseData = this.addRule(data);
} else if(action === PostMessageAction.UpdateRule) {
responseData = this.updateRule(data);
} else if(action === PostMessageAction.DeleteRules) {
responseData = this.deleteRules();
} else if(action === PostMessageAction.DeleteRuleById) {
responseData = this.deleteRuleById(data);
} else if(action === PostMessageAction.DeleteRule) {
responseData = this.deleteRule(data);
} else if(action === PostMessageAction.GetUserId) {
responseData = this.getUserId();
} else if(action === PostMessageAction.ChangeRuleStatusById) {
Expand All @@ -100,29 +98,13 @@ class ServiceWorker extends BaseService {
}
sendResponse(await responseData);
} catch (error: any) {
// Temp solution
// Add 100 to ID
const { version } = chrome.runtime.getManifest();
const uniqueErrorText = 'does not have a unique ID.';
const emptyRuleText = 'Error at parameter \'options\': Error at property \'addRules\': Error at index 0: Invalid type: expected declarativeNetRequest.Rule, found undefined.';
if(error.message.includes(uniqueErrorText)) {
const id: number = await StorageService.generateNextId();
await StorageService.set({[StorageKey.NEXT_ID]: id + 100});
sendResponse(await this.addRule(data));
handleError(error, {action: PostMessageAction[action], data: {...data, version}});
} else if(error.message.includes(emptyRuleText)) {
// Temp solution
// Track all data
const ruleData = await StorageService.getSingleItem(String(data.id));
sendResponse({error: true, info: handleError(error, {action: PostMessageAction[action], data: {...data, version, ruleData}})})
} else {
sendResponse({error: true, info: handleError(error, {action: PostMessageAction[action], data: {...data, version}})})
}
sendResponse({error: true, info: handleError(error, {action: PostMessageAction[action], data: {...data, version}})})
}
})();
};

async getRuleById(data): Promise<any> {
async getRule(data): Promise<any> {
const ruleData = await StorageService.get(String(data.id));
return {ruleData: ruleData[data.id]};
}
Expand All @@ -133,7 +115,6 @@ class ServiceWorker extends BaseService {
await RuleService.set([{...rule, id}]);
}
if(!ruleData.enabled && ruleData.rule) {
// @ts-ignore
ruleData.rule.id = id;
}
await StorageService.set({[id]: { ...ruleData, id }});
Expand All @@ -156,7 +137,7 @@ class ServiceWorker extends BaseService {
(await StorageService.getRules()).map(({id}) => StorageService.remove(String(id)));
}

async deleteRuleById(data): Promise<void> {
async deleteRule(data): Promise<void> {
await RuleService.removeById(data.id);
await StorageService.remove(String(data.id));
}
Expand Down
14 changes: 7 additions & 7 deletions src/services/StorageService.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import CacheService from 'services/CacheService';
// import CacheService from 'services/CacheService';
import { StorageItemType, StorageKey } from "models/storageModel";
import { IRuleData } from "src/models/formFieldModel";
import RulesMatchedDetails = chrome.declarativeNetRequest.RulesMatchedDetails;
Expand Down Expand Up @@ -52,15 +52,15 @@ class StorageService {
storageRule.lastMatchedTimestamp = timeStamp;
await this.set({[rule.ruleId]: storageRule});
});
}
}

async getUserId(): Promise<number> {
const config: {[key: string]: any} = await this.getSingleItem(StorageKey.CONFIG);
if(!config[StorageKey.USER_ID]) {
config[StorageKey.USER_ID] = Date.now();
await this.set({[StorageKey.CONFIG]: config});
const timestamp: number = Date.now();
const userId: number = await this.getSingleItem(StorageKey.USER_ID) || timestamp;
if(userId === timestamp) {
this.set({[StorageKey.USER_ID]: userId});
}
return config[StorageKey.USER_ID];
return userId;
}
}

Expand Down

0 comments on commit 21aed22

Please sign in to comment.