aboutsummaryrefslogtreecommitdiff
path: root/src/content/usecases
diff options
context:
space:
mode:
authorShin'ya UEOKA <ueokande@i-beam.org>2019-10-06 12:39:56 +0000
committerShin'ya UEOKA <ueokande@i-beam.org>2019-10-08 11:43:10 +0000
commit7528fe831fa4e17e5c427e89025ac76b078a9313 (patch)
tree9c40749b231ec1a8bdea3a9d720eb78b20ab7bab /src/content/usecases
parent9ff80fcac3600401c9fed053cc8422f89c404940 (diff)
Ignore keys on partial blacklist
Diffstat (limited to 'src/content/usecases')
-rw-r--r--src/content/usecases/KeymapUseCase.ts15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/content/usecases/KeymapUseCase.ts b/src/content/usecases/KeymapUseCase.ts
index 495f6d0..67d667d 100644
--- a/src/content/usecases/KeymapUseCase.ts
+++ b/src/content/usecases/KeymapUseCase.ts
@@ -6,6 +6,7 @@ import * as operations from '../../shared/operations';
import Keymaps from '../../shared/settings/Keymaps';
import Key from '../../shared/settings/Key';
import KeySequence from '../../shared/settings/KeySequence';
+import AddressRepository from '../repositories/AddressRepository';
type KeymapEntityMap = Map<KeySequence, operations.Operation>;
@@ -25,11 +26,19 @@ export default class KeymapUseCase {
@inject('AddonEnabledRepository')
private addonEnabledRepository: AddonEnabledRepository,
+
+ @inject('AddressRepository')
+ private addressRepository: AddressRepository,
) {
}
nextOp(key: Key): operations.Operation | null {
let sequence = this.repository.enqueueKey(key);
+ if (sequence.length() === 1 && this.blacklistKey(key)) {
+ // ignore if the input starts with black list keys
+ this.repository.clear();
+ return null;
+ }
let keymaps = this.keymapEntityMap();
let matched = Array.from(keymaps.keys()).filter(
@@ -71,4 +80,10 @@ export default class KeymapUseCase {
) as [KeySequence, operations.Operation][];
return new Map<KeySequence, operations.Operation>(entries);
}
+
+ private blacklistKey(key: Key): boolean {
+ let url = this.addressRepository.getCurrentURL();
+ let blacklist = this.settingRepository.get().blacklist;
+ return blacklist.includeKey(url, key);
+ }
}