Skip to content

Commit

Permalink
switch to eslint
Browse files Browse the repository at this point in the history
  • Loading branch information
Michael J. Currie committed Sep 23, 2019
1 parent 8dd321f commit 399db81
Show file tree
Hide file tree
Showing 6 changed files with 750 additions and 71 deletions.
Empty file added .eslintignore
Empty file.
18 changes: 18 additions & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
module.exports = {
parser: '@typescript-eslint/parser',
plugins: ['@typescript-eslint'],
env: {
browser: true
},
parserOptions: {
project: './tsconfig.json'
},
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/eslint-recommended',
'plugin:@typescript-eslint/recommended'
],
rules: {
'@typescript-eslint/no-explicit-any': 'off'
}
};
6 changes: 5 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,13 @@
"version": "0.4.0",
"description": "A Razor class library for interacting with the browser visibility API",
"scripts": {
"build": "tsc"
"build": "tsc",
"lint": "eslint ./src --ext .ts"
},
"devDependencies": {
"@typescript-eslint/eslint-plugin": "^2.3.0",
"@typescript-eslint/parser": "^2.3.0",
"eslint": "^6.4.0",
"tslint": "^5.19.0",
"typescript": "^3.6.2"
},
Expand Down
116 changes: 57 additions & 59 deletions src/pagevisibility.ts
Original file line number Diff line number Diff line change
@@ -1,61 +1,59 @@
namespace CurrieTechnologies.Razor.PageVisibility {
declare var DotNet: any;

const domWindow = window as any;

const namespace: string = "CurrieTechnologies.Razor.PageVisibility";

const visibilityCallbacks = new Map<string, () => Promise<void>>();

function dispatchVisibiliyChange(
id: string,
hidden: boolean,
visibilityState: string,
): Promise<void> {
return DotNet.invokeMethodAsync(
namespace,
"ReceiveVisibiliyChange",
id,
hidden,
visibilityState,
declare let DotNet: any;

const domWindow = window as any;

const namespace = "CurrieTechnologies.Razor.PageVisibility";

const visibilityCallbacks = new Map<string, () => Promise<void>>();

function dispatchVisibiliyChange(
id: string,
hidden: boolean,
visibilityState: string,
): Promise<void> {
return DotNet.invokeMethodAsync(
namespace,
"ReceiveVisibiliyChange",
id,
hidden,
visibilityState,
);
}

function visibilityCallbackFactory(actionId: string) {
return (): Promise<void> =>
dispatchVisibiliyChange(
actionId,
document.hidden,
document.visibilityState,
);
}

function visibilityCallbackFactory(actionId: string) {
return () =>
dispatchVisibiliyChange(
actionId,
document.hidden,
document.visibilityState,
);
}

domWindow.CurrieTechnologies = domWindow.CurrieTechnologies || {};
domWindow.CurrieTechnologies.Razor = domWindow.CurrieTechnologies.Razor || {};
domWindow.CurrieTechnologies.Razor.PageVisibility =
domWindow.CurrieTechnologies.Razor.PageVisibility || {};

domWindow.CurrieTechnologies.Razor.PageVisibility.IsHidden = (): boolean => {
return document.hidden;
};

domWindow.CurrieTechnologies.Razor.PageVisibility.GetVisibilityState = (): string => {
return document.visibilityState;
};

domWindow.CurrieTechnologies.Razor.PageVisibility.OnVisibilityChange = (
actionId: string,
): void => {
const callback = visibilityCallbackFactory(actionId);
visibilityCallbacks.set(actionId, callback);
document.addEventListener("visibilitychange", callback);
};

domWindow.CurrieTechnologies.Razor.PageVisibility.RemoveVisibilityChangeCallback = (
actionId: string,
): void => {
const callback = visibilityCallbacks.get(actionId) as () => Promise<void>;
document.removeEventListener("visibilitychange", callback);
visibilityCallbacks.delete(actionId);
};
}

domWindow.CurrieTechnologies = domWindow.CurrieTechnologies || {};
domWindow.CurrieTechnologies.Razor = domWindow.CurrieTechnologies.Razor || {};
domWindow.CurrieTechnologies.Razor.PageVisibility =
domWindow.CurrieTechnologies.Razor.PageVisibility || {};

domWindow.CurrieTechnologies.Razor.PageVisibility.IsHidden = (): boolean => {
return document.hidden;
};

domWindow.CurrieTechnologies.Razor.PageVisibility.GetVisibilityState = (): string => {
return document.visibilityState;
};

domWindow.CurrieTechnologies.Razor.PageVisibility.OnVisibilityChange = (
actionId: string,
): void => {
const callback = visibilityCallbackFactory(actionId);
visibilityCallbacks.set(actionId, callback);
document.addEventListener("visibilitychange", callback);
};

domWindow.CurrieTechnologies.Razor.PageVisibility.RemoveVisibilityChangeCallback = (
actionId: string,
): void => {
const callback = visibilityCallbacks.get(actionId) as () => Promise<void>;
document.removeEventListener("visibilitychange", callback);
visibilityCallbacks.delete(actionId);
};
6 changes: 0 additions & 6 deletions tslint.json

This file was deleted.

Loading

0 comments on commit 399db81

Please sign in to comment.