Skip to content

Commit d7e7b6f

Browse files
committed
Add types and give better names
1 parent 01584bc commit d7e7b6f

File tree

11 files changed

+71
-34
lines changed

11 files changed

+71
-34
lines changed

src/headless/plugins/chatboxes/chatboxes.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,14 @@ class ChatBoxes extends Collection {
4343
const bare_jid = _converse.session.get('bare_jid');
4444
initStorage(this, `converse.chatboxes-${bare_jid}`);
4545
this.fetch({
46-
'add': true,
47-
'success': (c) => this.onChatBoxesFetched(c),
46+
add: true,
47+
success: (c) => this.onChatBoxesFetched(c),
4848
});
4949
}
5050

5151
/**
52-
* @param {object} attrs
53-
* @param {object} options
52+
* @param {import('./types').CreateModelAttributes} attrs
53+
* @param {import('@converse/skeletor/src/types/model.js').ModelOptions} options
5454
*/
5555
createModel(attrs, options) {
5656
if (!attrs.type) {
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export type CreateModelAttributes = Record<string, string> & {
2+
type: string;
3+
}

src/headless/types/plugins/chatboxes/chatboxes.d.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@ declare class ChatBoxes extends Collection {
1717
*/
1818
onConnected(reconnecting: boolean): void;
1919
/**
20-
* @param {object} attrs
21-
* @param {object} options
20+
* @param {import('./types').CreateModelAttributes} attrs
21+
* @param {import('@converse/skeletor/src/types/model.js').ModelOptions} options
2222
*/
23-
createModel(attrs: object, options: object): any;
23+
createModel(attrs: import("./types").CreateModelAttributes, options: import("@converse/skeletor/src/types/model.js").ModelOptions): any;
2424
}
2525
import { Collection } from '@converse/skeletor';
2626
//# sourceMappingURL=chatboxes.d.ts.map
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
export type CreateModelAttributes = Record<string, string> & {
2+
type: string;
3+
};
4+
//# sourceMappingURL=types.d.ts.map

src/headless/types/utils/index.d.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ declare const _default: {
4343
firstCharToUpperCase(text: string): string;
4444
getLongestSubstring(string: string, candidates: string[]): string;
4545
isString(s: any): boolean;
46-
getDefaultStore(): "session" | "persistent";
47-
createStore(id: any, store: any): any;
48-
initStorage(model: any, id: any, type: any): void;
46+
getDefaultStorageType(): import("./types.js").StorageType;
47+
createStore(id: string, type: import("./types.js").StorageType): any;
48+
initStorage(model: import("@converse/skeletor").Model | import("@converse/skeletor").Collection, id: string, type?: import("./types.js").StorageType): void;
4949
isErrorStanza(stanza: Element): boolean;
5050
isForbiddenError(stanza: Element): boolean;
5151
isServiceUnavailableError(stanza: Element): boolean;
@@ -129,8 +129,8 @@ declare function shouldCreateMessage(attrs: any): any;
129129
* @param {boolean} [cancelable]
130130
*/
131131
declare function triggerEvent(el: Element, name: string, type?: string, bubbles?: boolean, cancelable?: boolean): void;
132+
import { Model } from '@converse/skeletor';
132133
import * as session from './session.js';
133134
import * as promise from './promise.js';
134-
import { Model } from '@converse/skeletor';
135135
import * as init from './init.js';
136136
//# sourceMappingURL=index.d.ts.map
Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,16 @@
1-
export function getDefaultStore(): "session" | "persistent";
2-
export function createStore(id: any, store: any): any;
3-
export function initStorage(model: any, id: any, type: any): void;
1+
/**
2+
* @returns {import('./types').StorageType}
3+
*/
4+
export function getDefaultStorageType(): import("./types").StorageType;
5+
/**
6+
* @param {string} id
7+
* @param {import('./types').StorageType} type
8+
*/
9+
export function createStore(id: string, type: import("./types").StorageType): any;
10+
/**
11+
* @param {import('@converse/skeletor').Model|import('@converse/skeletor').Collection} model
12+
* @param {string} id
13+
* @param {import('./types').StorageType} [type]
14+
*/
15+
export function initStorage(model: import("@converse/skeletor").Model | import("@converse/skeletor").Collection, id: string, type?: import("./types").StorageType): void;
416
//# sourceMappingURL=storage.d.ts.map

src/headless/types/utils/types.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,5 @@ export type MediaURLMetadata = MediaURLIndexes & {
2222
is_image?: boolean;
2323
is_video?: boolean;
2424
};
25+
export type StorageType = 'persistent' | 'session';
2526
//# sourceMappingURL=types.d.ts.map

src/headless/utils/storage.js

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@ import { getUnloadEvent } from './session.js';
55

66
const settings = settings_api;
77

8-
export function getDefaultStore() {
8+
/**
9+
* @returns {import('./types').StorageType}
10+
*/
11+
export function getDefaultStorageType() {
912
if (_converse.state.config.get('trusted')) {
1013
const is_non_persistent = settings.get('persistent_store') === 'sessionStorage';
1114
return is_non_persistent ? 'session' : 'persistent';
@@ -14,23 +17,35 @@ export function getDefaultStore() {
1417
}
1518
}
1619

17-
function storeUsesIndexedDB(store) {
18-
return store === 'persistent' && settings.get('persistent_store') === 'IndexedDB';
20+
/**
21+
* @param {import('./types').StorageType} type
22+
*/
23+
function storeUsesIndexedDB(type) {
24+
return type === 'persistent' && settings.get('persistent_store') === 'IndexedDB';
1925
}
2026

21-
export function createStore(id, store) {
22-
const name = store || getDefaultStore();
27+
/**
28+
* @param {string} id
29+
* @param {import('./types').StorageType} type
30+
*/
31+
export function createStore(id, type) {
32+
const name = type || getDefaultStorageType();
2333
const s = _converse.storage[name];
2434
if (typeof s === 'undefined') {
2535
throw new TypeError(`createStore: Could not find store for ${id}`);
2636
}
27-
return new Storage(id, s, storeUsesIndexedDB(store));
37+
return new Storage(id, s, storeUsesIndexedDB(type));
2838
}
2939

40+
/**
41+
* @param {import('@converse/skeletor').Model|import('@converse/skeletor').Collection} model
42+
* @param {string} id
43+
* @param {import('./types').StorageType} [type]
44+
*/
3045
export function initStorage(model, id, type) {
31-
const store = type || getDefaultStore();
32-
model.browserStorage = createStore(id, store);
33-
if (storeUsesIndexedDB(store)) {
46+
type = type || getDefaultStorageType();
47+
model.browserStorage = createStore(id, type);
48+
if (storeUsesIndexedDB(type)) {
3449
const flush = () => model.browserStorage.flush();
3550
const unloadevent = getUnloadEvent();
3651
window.addEventListener(unloadevent, flush);

src/headless/utils/types.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,5 @@ export type MediaURLMetadata = MediaURLIndexes & {
2525
is_image?: boolean;
2626
is_video?: boolean;
2727
};
28+
29+
export type StorageType = 'persistent' | 'session';

src/plugins/controlbox/tests/login.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,15 +45,15 @@ describe("The Login Form", function () {
4545
cbview.querySelector('input[name="password"]').value = 'secret';
4646

4747
expect(_converse.config.get('trusted')).toBe(true);
48-
expect(u.getDefaultStore()).toBe('persistent');
48+
expect(u.getDefaultStorageType()).toBe('persistent');
4949
cbview.querySelector('button[type="submit"]').click();
5050
expect(_converse.config.get('trusted')).toBe(true);
51-
expect(u.getDefaultStore()).toBe('persistent');
51+
expect(u.getDefaultStorageType()).toBe('persistent');
5252

5353
checkbox.click();
5454
cbview.querySelector('button[type="submit"]').click();
5555
expect(_converse.config.get('trusted')).toBe(false);
56-
expect(u.getDefaultStore()).toBe('session');
56+
expect(u.getDefaultStorageType()).toBe('session');
5757
}));
5858

5959
it("checkbox can be set to false by default",
@@ -81,11 +81,11 @@ describe("The Login Form", function () {
8181

8282
cbview.querySelector('button[type="submit"]').click();
8383
expect(_converse.config.get('trusted')).toBe(false);
84-
expect(u.getDefaultStore()).toBe('session');
84+
expect(u.getDefaultStorageType()).toBe('session');
8585

8686
checkbox.click();
8787
cbview.querySelector('button[type="submit"]').click();
8888
expect(_converse.config.get('trusted')).toBe(true);
89-
expect(u.getDefaultStore()).toBe('persistent');
89+
expect(u.getDefaultStorageType()).toBe('persistent');
9090
}));
9191
});

0 commit comments

Comments
 (0)