Convert from CRLF to LF
This commit is contained in:
parent
0317e9401d
commit
3ff3130cbb
@ -1,39 +1,39 @@
|
|||||||
@font-face {
|
@font-face {
|
||||||
font-family: Quicksand;
|
font-family: Quicksand;
|
||||||
src: url(../fonts/Quicksand.ttf);
|
src: url(../fonts/Quicksand.ttf);
|
||||||
}
|
}
|
||||||
|
|
||||||
:root {
|
:root {
|
||||||
--font-fallback: BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-sans;
|
--font-fallback: BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-sans;
|
||||||
}
|
}
|
||||||
|
|
||||||
* {
|
* {
|
||||||
font-family: "Quicksand", var(--font-fallback);
|
font-family: "Quicksand", var(--font-fallback);
|
||||||
}
|
}
|
||||||
|
|
||||||
html {
|
html {
|
||||||
width: 250px;
|
width: 250px;
|
||||||
}
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
background: #fdf8ea;
|
background: #fdf8ea;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
h1,
|
h1,
|
||||||
h2,
|
h2,
|
||||||
h3,
|
h3,
|
||||||
h4,
|
h4,
|
||||||
h5,
|
h5,
|
||||||
h6 {
|
h6 {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
h2 span {
|
h2 span {
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
p {
|
p {
|
||||||
text-align: justify;
|
text-align: justify;
|
||||||
font-size: 0.9em;
|
font-size: 0.9em;
|
||||||
}
|
}
|
||||||
2610
css/sweetalert.css
2610
css/sweetalert.css
File diff suppressed because it is too large
Load Diff
130
index.html
130
index.html
@ -1,66 +1,66 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>AIS Visa Auto Rescheduler</title>
|
<title>AIS Visa Auto Rescheduler</title>
|
||||||
<link rel="stylesheet" href="css/bootstrap.min.css"></link>
|
<link rel="stylesheet" href="css/bootstrap.min.css"></link>
|
||||||
<link rel="stylesheet" href="css/styles.css"></link>
|
<link rel="stylesheet" href="css/styles.css"></link>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
<h4 class="mt-2 mb-0">AIS Visa Auto Rescheduler<br><span id="version"></span></h4>
|
<h4 class="mt-2 mb-0">AIS Visa Auto Rescheduler<br><span id="version"></span></h4>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
<h3 class="my-2" id="credits">50</h3>
|
<h3 class="my-2" id="credits">50</h3>
|
||||||
<p class="my-2 text-center">Credits left.</p>
|
<p class="my-2 text-center">Credits left.</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
<div class="mt-2">
|
<div class="mt-2">
|
||||||
<div class="form-check form-switch" style="text-align: left;">
|
<div class="form-check form-switch" style="text-align: left;">
|
||||||
<input class="form-check-input" type="checkbox" role="switch" id="activate">
|
<input class="form-check-input" type="checkbox" role="switch" id="activate">
|
||||||
<label class="form-check-label" for="activate">Activate the script</label>
|
<label class="form-check-label" for="activate">Activate the script</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="my-2">
|
<div class="my-2">
|
||||||
<div class="form-check form-switch" style="text-align: left;">
|
<div class="form-check form-switch" style="text-align: left;">
|
||||||
<input class="form-check-input" type="checkbox" role="switch" id="autobook">
|
<input class="form-check-input" type="checkbox" role="switch" id="autobook">
|
||||||
<label class="form-check-label" for="autobook">Enable Autobook</label>
|
<label class="form-check-label" for="autobook">Enable Autobook</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="my-2">
|
<div class="my-2">
|
||||||
<input type="range" id="frequency" name="frequency" min="1" max="10" step="0.5">
|
<input type="range" id="frequency" name="frequency" min="1" max="10" step="0.5">
|
||||||
<label for="frequency">Frequency of checks<br>(every <span id="checkfrequency">1</span> minutes)</label>
|
<label for="frequency">Frequency of checks<br>(every <span id="checkfrequency">1</span> minutes)</label>
|
||||||
</div>
|
</div>
|
||||||
<div class="my-2">
|
<div class="my-2">
|
||||||
<input type="range" id="gap" name="gap" min="0" value="3" max="30" step="1">
|
<input type="range" id="gap" name="gap" min="0" value="3" max="30" step="1">
|
||||||
<label for="gap">Check availability from <span id="daygap">3</span> days from today. [0 = today]</label>
|
<label for="gap">Check availability from <span id="daygap">3</span> days from today. [0 = today]</label>
|
||||||
</div>
|
</div>
|
||||||
<p class="my-2 text-center">Changes are autosaved.</p>
|
<p class="my-2 text-center">Changes are autosaved.</p>
|
||||||
<form class="my-2" name="ais_visa_info" id="ais_visa_info">
|
<form class="my-2" name="ais_visa_info" id="ais_visa_info">
|
||||||
<div class="d-grid">
|
<div class="d-grid">
|
||||||
<button id="reset_info" type="submit" class="btn btn-danger btn-sm">Configure / Reset</button>
|
<button id="reset_info" type="submit" class="btn btn-danger btn-sm">Configure / Reset</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
<p class="my-2 text-center">
|
<p class="my-2 text-center">
|
||||||
<button id=read_faqs form=null class="btn btn-info btn-sm">Read FAQs</button>
|
<button id=read_faqs form=null class="btn btn-info btn-sm">Read FAQs</button>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<a href="https://www.buymeacoffee.com/hymnz" target="_blank">
|
<a href="https://www.buymeacoffee.com/hymnz" target="_blank">
|
||||||
<img style="width: 250px;background: #5F7FFF;" src="https://img.buymeacoffee.com/button-api/?text=Help me run the extension&emoji=🙂&slug=hymnz&button_colour=5F7FFF&font_colour=ffffff&font_family=Comic&outline_colour=000000&coffee_colour=FFDD00" />
|
<img style="width: 250px;background: #5F7FFF;" src="https://img.buymeacoffee.com/button-api/?text=Help me run the extension&emoji=🙂&slug=hymnz&button_colour=5F7FFF&font_colour=ffffff&font_family=Comic&outline_colour=000000&coffee_colour=FFDD00" />
|
||||||
</a>
|
</a>
|
||||||
<script src="js/content.js"></script>
|
<script src="js/content.js"></script>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
156
js/background.js
156
js/background.js
@ -1,79 +1,79 @@
|
|||||||
chrome.runtime.onConnect.addListener(function(port) {
|
chrome.runtime.onConnect.addListener(function(port) {
|
||||||
port.onMessage.addListener(async function(def) {
|
port.onMessage.addListener(async function(def) {
|
||||||
let response = new Object();
|
let response = new Object();
|
||||||
response.action = def.action;
|
response.action = def.action;
|
||||||
if (def.action == "fetch_info") {
|
if (def.action == "fetch_info") {
|
||||||
let { __un } = await chrome.storage.local.get("__un");
|
let { __un } = await chrome.storage.local.get("__un");
|
||||||
let { __pw } = await chrome.storage.local.get("__pw");
|
let { __pw } = await chrome.storage.local.get("__pw");
|
||||||
let { __id } = await chrome.storage.local.get("__id");
|
let { __id } = await chrome.storage.local.get("__id");
|
||||||
let { __ap } = await chrome.storage.local.get("__ap");
|
let { __ap } = await chrome.storage.local.get("__ap");
|
||||||
let { __il } = await chrome.storage.local.get("__il");
|
let { __il } = await chrome.storage.local.get("__il");
|
||||||
let { __ad } = await chrome.storage.local.get("__ad");
|
let { __ad } = await chrome.storage.local.get("__ad");
|
||||||
let { __al } = await chrome.storage.local.get("__al");
|
let { __al } = await chrome.storage.local.get("__al");
|
||||||
let { __ar } = await chrome.storage.local.get("__ar");
|
let { __ar } = await chrome.storage.local.get("__ar");
|
||||||
let $version = await new Promise(r => chrome.management.getSelf(self => r(self.version)));
|
let $version = await new Promise(r => chrome.management.getSelf(self => r(self.version)));
|
||||||
response.data = {
|
response.data = {
|
||||||
$username: __un,
|
$username: __un,
|
||||||
$password: __pw,
|
$password: __pw,
|
||||||
$appid: __id,
|
$appid: __id,
|
||||||
$active: __ap,
|
$active: __ap,
|
||||||
$apptCenter: __il,
|
$apptCenter: __il,
|
||||||
$apptDate: __ad,
|
$apptDate: __ad,
|
||||||
$ascCenter: __al,
|
$ascCenter: __al,
|
||||||
$ascReverse: __ar,
|
$ascReverse: __ar,
|
||||||
$version
|
$version
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
port.postMessage(response);
|
port.postMessage(response);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
chrome.runtime.onInstalled.addListener(async({ reason }) => {
|
chrome.runtime.onInstalled.addListener(async({ reason }) => {
|
||||||
chrome.action.disable();
|
chrome.action.disable();
|
||||||
chrome.declarativeContent.onPageChanged.removeRules(undefined, () => {
|
chrome.declarativeContent.onPageChanged.removeRules(undefined, () => {
|
||||||
let exampleRule = {
|
let exampleRule = {
|
||||||
conditions: [
|
conditions: [
|
||||||
new chrome.declarativeContent.PageStateMatcher({
|
new chrome.declarativeContent.PageStateMatcher({
|
||||||
pageUrl: { hostEquals: 'ais.usvisa-info.com' },
|
pageUrl: { hostEquals: 'ais.usvisa-info.com' },
|
||||||
})
|
})
|
||||||
],
|
],
|
||||||
actions: [new chrome.declarativeContent.ShowAction()],
|
actions: [new chrome.declarativeContent.ShowAction()],
|
||||||
};
|
};
|
||||||
|
|
||||||
let rules = [exampleRule];
|
let rules = [exampleRule];
|
||||||
chrome.declarativeContent.onPageChanged.addRules(rules);
|
chrome.declarativeContent.onPageChanged.addRules(rules);
|
||||||
});
|
});
|
||||||
if (reason === 'install') {
|
if (reason === 'install') {
|
||||||
await chrome.storage.local.set({ __ab: false, __ap: true, __cr: 0, __fq: 1, __gp: 3 });
|
await chrome.storage.local.set({ __ab: false, __ap: true, __cr: 0, __fq: 1, __gp: 3 });
|
||||||
chrome.tabs.create({
|
chrome.tabs.create({
|
||||||
url: "https://ais.usvisa-info.com/en-us/countries_list/niv"
|
url: "https://ais.usvisa-info.com/en-us/countries_list/niv"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
var myNotificationID = null,
|
var myNotificationID = null,
|
||||||
senderId = null,
|
senderId = null,
|
||||||
ensureSendMessage = (tabId, message, callback) => {
|
ensureSendMessage = (tabId, message, callback) => {
|
||||||
chrome.tabs.sendMessage(tabId, { ping: true }, function(response) {
|
chrome.tabs.sendMessage(tabId, { ping: true }, function(response) {
|
||||||
if (response && response.pong) {
|
if (response && response.pong) {
|
||||||
chrome.tabs.sendMessage(tabId, message, callback);
|
chrome.tabs.sendMessage(tabId, message, callback);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
chrome.notifications.onButtonClicked.addListener(function(notifId, btnId) {
|
chrome.notifications.onButtonClicked.addListener(function(notifId, btnId) {
|
||||||
if (notifId === myNotificationID) {
|
if (notifId === myNotificationID) {
|
||||||
chrome.tabs.get(senderId, function(tab) {
|
chrome.tabs.get(senderId, function(tab) {
|
||||||
chrome.tabs.highlight({ 'tabs': tab.index }, function() {});
|
chrome.tabs.highlight({ 'tabs': tab.index }, function() {});
|
||||||
});
|
});
|
||||||
ensureSendMessage(senderId, { bookNow: btnId === 0 });
|
ensureSendMessage(senderId, { bookNow: btnId === 0 });
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
chrome.runtime.onMessage.addListener((req, sender, sendResponse) => {
|
chrome.runtime.onMessage.addListener((req, sender, sendResponse) => {
|
||||||
chrome.notifications.create(req.options, function(id) {
|
chrome.notifications.create(req.options, function(id) {
|
||||||
myNotificationID = id;
|
myNotificationID = id;
|
||||||
senderId = sender.tab.id;
|
senderId = sender.tab.id;
|
||||||
});
|
});
|
||||||
sendResponse(true);
|
sendResponse(true);
|
||||||
});
|
});
|
||||||
1328
js/bootstrap.min.js
vendored
1328
js/bootstrap.min.js
vendored
File diff suppressed because it is too large
Load Diff
140
js/content.js
140
js/content.js
@ -1,71 +1,71 @@
|
|||||||
(async function() {
|
(async function() {
|
||||||
const $version = await new Promise(r => chrome.management.getSelf(self => r(self.version)));
|
const $version = await new Promise(r => chrome.management.getSelf(self => r(self.version)));
|
||||||
|
|
||||||
document.getElementById("version").innerText = `(version v${$version})`;
|
document.getElementById("version").innerText = `(version v${$version})`;
|
||||||
|
|
||||||
await chrome.storage.local.get().then(items => {
|
await chrome.storage.local.get().then(items => {
|
||||||
document.getElementById("activate").checked = items["__ap"];
|
document.getElementById("activate").checked = items["__ap"];
|
||||||
document.getElementById("autobook").checked = items["__ab"];
|
document.getElementById("autobook").checked = items["__ab"];
|
||||||
document.getElementById("credits").innerText = items["__cr"] || "--";
|
document.getElementById("credits").innerText = items["__cr"] || "--";
|
||||||
document.getElementById("frequency").value = items["__fq"] || 1;
|
document.getElementById("frequency").value = items["__fq"] || 1;
|
||||||
document.getElementById("checkfrequency").innerText = items["__fq"] || 1;
|
document.getElementById("checkfrequency").innerText = items["__fq"] || 1;
|
||||||
document.getElementById("gap").value = items["__gp"] || 3;
|
document.getElementById("gap").value = items["__gp"] || 3;
|
||||||
document.getElementById("daygap").innerText = items["__gp"] || 3;
|
document.getElementById("daygap").innerText = items["__gp"] || 3;
|
||||||
})
|
})
|
||||||
|
|
||||||
chrome.storage.onChanged.addListener((changes, area) => {
|
chrome.storage.onChanged.addListener((changes, area) => {
|
||||||
if (changes.__cr)
|
if (changes.__cr)
|
||||||
document.getElementById("credits").innerText = changes.__cr.newValue;
|
document.getElementById("credits").innerText = changes.__cr.newValue;
|
||||||
|
|
||||||
if (changes.__fq)
|
if (changes.__fq)
|
||||||
document.getElementById("checkfrequency").innerText = changes.__fq.newValue;
|
document.getElementById("checkfrequency").innerText = changes.__fq.newValue;
|
||||||
|
|
||||||
if (changes.__gp)
|
if (changes.__gp)
|
||||||
document.getElementById("daygap").innerText = changes.__gp.newValue;
|
document.getElementById("daygap").innerText = changes.__gp.newValue;
|
||||||
});
|
});
|
||||||
|
|
||||||
document.getElementById("activate").addEventListener("change", async function() {
|
document.getElementById("activate").addEventListener("change", async function() {
|
||||||
chrome.storage.local.set({ __ap: this.checked });
|
chrome.storage.local.set({ __ap: this.checked });
|
||||||
let [tab] = await chrome.tabs.query({ active: true, lastFocusedWindow: true });
|
let [tab] = await chrome.tabs.query({ active: true, lastFocusedWindow: true });
|
||||||
chrome.tabs.sendMessage(tab.id, { action: "activate", status: this.checked });
|
chrome.tabs.sendMessage(tab.id, { action: "activate", status: this.checked });
|
||||||
});
|
});
|
||||||
|
|
||||||
document.getElementById("autobook").addEventListener("change", async function() {
|
document.getElementById("autobook").addEventListener("change", async function() {
|
||||||
chrome.storage.local.set({ __ab: this.checked });
|
chrome.storage.local.set({ __ab: this.checked });
|
||||||
});
|
});
|
||||||
|
|
||||||
document.getElementById("frequency").addEventListener("change", function() {
|
document.getElementById("frequency").addEventListener("change", function() {
|
||||||
chrome.storage.local.set({ __fq: this.value });
|
chrome.storage.local.set({ __fq: this.value });
|
||||||
});
|
});
|
||||||
|
|
||||||
document.getElementById("gap").addEventListener("change", function() {
|
document.getElementById("gap").addEventListener("change", function() {
|
||||||
chrome.storage.local.set({ __gp: this.value });
|
chrome.storage.local.set({ __gp: this.value });
|
||||||
});
|
});
|
||||||
|
|
||||||
document.getElementById("read_faqs").addEventListener("click", function() {
|
document.getElementById("read_faqs").addEventListener("click", function() {
|
||||||
chrome.tabs.create({
|
chrome.tabs.create({
|
||||||
url: chrome.runtime.getURL("pages/faqs.html")
|
url: chrome.runtime.getURL("pages/faqs.html")
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
document.getElementById("ais_visa_info").addEventListener("submit", async function(e) {
|
document.getElementById("ais_visa_info").addEventListener("submit", async function(e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
let button = document.getElementById("reset_info");
|
let button = document.getElementById("reset_info");
|
||||||
button.setAttribute("disabled", "disabled");
|
button.setAttribute("disabled", "disabled");
|
||||||
|
|
||||||
await new Promise(r => setTimeout(r, 500));
|
await new Promise(r => setTimeout(r, 500));
|
||||||
|
|
||||||
await chrome.storage.local.clear();
|
await chrome.storage.local.clear();
|
||||||
await chrome.storage.local.set({ __ab: false, __ap: true, __cr: 0, __fq: 1, __gp: 7 });
|
await chrome.storage.local.set({ __ab: false, __ap: true, __cr: 0, __fq: 1, __gp: 7 });
|
||||||
|
|
||||||
let [tab] = await chrome.tabs.query({ active: true, lastFocusedWindow: true });
|
let [tab] = await chrome.tabs.query({ active: true, lastFocusedWindow: true });
|
||||||
await chrome.tabs.sendMessage(tab.id, { action: "logout" });
|
await chrome.tabs.sendMessage(tab.id, { action: "logout" });
|
||||||
|
|
||||||
button.classList.toggle("btn-success");
|
button.classList.toggle("btn-success");
|
||||||
button.innerText = "Success";
|
button.innerText = "Success";
|
||||||
await new Promise(r => setTimeout(r, 1000));
|
await new Promise(r => setTimeout(r, 1000));
|
||||||
button.classList.toggle("btn-success");
|
button.classList.toggle("btn-success");
|
||||||
button.removeAttribute("disabled");
|
button.removeAttribute("disabled");
|
||||||
button.innerText = "Configure / Reset";
|
button.innerText = "Configure / Reset";
|
||||||
});
|
});
|
||||||
})();
|
})();
|
||||||
1142
js/rescheduler.js
1142
js/rescheduler.js
File diff suppressed because it is too large
Load Diff
768
js/sweetalert.js
768
js/sweetalert.js
File diff suppressed because one or more lines are too long
216
pages/faqs.html
216
pages/faqs.html
@ -1,109 +1,109 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<title>AIS Visa Scheduler FAQs</title>
|
<title>AIS Visa Scheduler FAQs</title>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<link href="../css/bootstrap.min.css" rel="stylesheet">
|
<link href="../css/bootstrap.min.css" rel="stylesheet">
|
||||||
<style>
|
<style>
|
||||||
body {
|
body {
|
||||||
background: #1e3b4d;
|
background: #1e3b4d;
|
||||||
}
|
}
|
||||||
|
|
||||||
section {
|
section {
|
||||||
font-family: Helvetica, Arial, system-ui, ui-sans-serif;
|
font-family: Helvetica, Arial, system-ui, ui-sans-serif;
|
||||||
}
|
}
|
||||||
|
|
||||||
.accordian-element {
|
.accordian-element {
|
||||||
background: white;
|
background: white;
|
||||||
}
|
}
|
||||||
|
|
||||||
.accordion-button {
|
.accordion-button {
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
font-size: 1.2rem;
|
font-size: 1.2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.accordion-button.collapsed {
|
.accordion-button.collapsed {
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
text-underline-offset: .5em;
|
text-underline-offset: .5em;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<section class="container mt-5">
|
<section class="container mt-5">
|
||||||
<div class="accordion" id="faqs-accordion">
|
<div class="accordion" id="faqs-accordion">
|
||||||
<div class="accordian-element">
|
<div class="accordian-element">
|
||||||
<h2 class="accordion-header">
|
<h2 class="accordion-header">
|
||||||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapse-0" aria-expanded="false" aria-controls="collapse-0">
|
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapse-0" aria-expanded="false" aria-controls="collapse-0">
|
||||||
What is this extension about?
|
What is this extension about?
|
||||||
</button>
|
</button>
|
||||||
</h2>
|
</h2>
|
||||||
<div id="collapse-0" class="accordion-collapse collapse" data-bs-parent="#faqs-accordion">
|
<div id="collapse-0" class="accordion-collapse collapse" data-bs-parent="#faqs-accordion">
|
||||||
<p class="accordion-body m-0">
|
<p class="accordion-body m-0">
|
||||||
This extension was born out of boredom and the ridiculous task of clicking through multiple months to find the next available date for rescheduling. I wanted to build something to click through the calendar but ended up building the extension which automates
|
This extension was born out of boredom and the ridiculous task of clicking through multiple months to find the next available date for rescheduling. I wanted to build something to click through the calendar but ended up building the extension which automates
|
||||||
everything.
|
everything.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="accordian-element">
|
<div class="accordian-element">
|
||||||
<h2 class="accordion-header">
|
<h2 class="accordion-header">
|
||||||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapse-1" aria-expanded="false" aria-controls="collapse-1">
|
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapse-1" aria-expanded="false" aria-controls="collapse-1">
|
||||||
Who can use this extension?
|
Who can use this extension?
|
||||||
</button>
|
</button>
|
||||||
</h2>
|
</h2>
|
||||||
<div id="collapse-1" class="accordion-collapse collapse" data-bs-parent="#faqs-accordion">
|
<div id="collapse-1" class="accordion-collapse collapse" data-bs-parent="#faqs-accordion">
|
||||||
<p class="accordion-body m-0">
|
<p class="accordion-body m-0">
|
||||||
This extension is designed to work for the AIS VISA application system only—which means only the countries listed here (<a href='https://ais.usvisa-info.com/en-us/countries_list/niv'>https://ais.usvisa-info.com/en-us/countries_list/niv</a>)
|
This extension is designed to work for the AIS VISA application system only—which means only the countries listed here (<a href='https://ais.usvisa-info.com/en-us/countries_list/niv'>https://ais.usvisa-info.com/en-us/countries_list/niv</a>)
|
||||||
will work with this extension. Also, this is only for rescheduling your appointment. If you are looking to schedule it for the first time, this extension will not work.
|
will work with this extension. Also, this is only for rescheduling your appointment. If you are looking to schedule it for the first time, this extension will not work.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="accordian-element">
|
<div class="accordian-element">
|
||||||
<h2 class="accordion-header">
|
<h2 class="accordion-header">
|
||||||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapse-2" aria-expanded="false" aria-controls="collapse-2">
|
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapse-2" aria-expanded="false" aria-controls="collapse-2">
|
||||||
How does this extension work?
|
How does this extension work?
|
||||||
</button>
|
</button>
|
||||||
</h2>
|
</h2>
|
||||||
<div id="collapse-2" class="accordion-collapse collapse" data-bs-parent="#faqs-accordion">
|
<div id="collapse-2" class="accordion-collapse collapse" data-bs-parent="#faqs-accordion">
|
||||||
<p class="accordion-body m-0">
|
<p class="accordion-body m-0">
|
||||||
The extension automates all the clicking and navigating that you'll generally do manually. It uses your current appointment date and periodically checks for any date earlier than it and tries to book it automatically.<br />The
|
The extension automates all the clicking and navigating that you'll generally do manually. It uses your current appointment date and periodically checks for any date earlier than it and tries to book it automatically.<br />The
|
||||||
extension uses credits every time it finds any date. Only when you are in a soft block or a hard block, the credits are not used.
|
extension uses credits every time it finds any date. Only when you are in a soft block or a hard block, the credits are not used.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="accordian-element">
|
<div class="accordian-element">
|
||||||
<h2 class="accordion-header">
|
<h2 class="accordion-header">
|
||||||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapse-3" aria-expanded="false" aria-controls="collapse-3">
|
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapse-3" aria-expanded="false" aria-controls="collapse-3">
|
||||||
Soft block? Hard block? You're scaring me. What are these?
|
Soft block? Hard block? You're scaring me. What are these?
|
||||||
</button>
|
</button>
|
||||||
</h2>
|
</h2>
|
||||||
<div id="collapse-3" class="accordion-collapse collapse" data-bs-parent="#faqs-accordion">
|
<div id="collapse-3" class="accordion-collapse collapse" data-bs-parent="#faqs-accordion">
|
||||||
<p class="accordion-body m-0">
|
<p class="accordion-body m-0">
|
||||||
<strong>Soft block</strong>:<br />The AIS system shows you no slots for 5 hours when you check for the slots a certain number of times. Sometimes this is 70 checks and sometimes it is only 20. The extension identifies this and
|
<strong>Soft block</strong>:<br />The AIS system shows you no slots for 5 hours when you check for the slots a certain number of times. Sometimes this is 70 checks and sometimes it is only 20. The extension identifies this and
|
||||||
automatically adjusts the checking interval to prevent a hard block.<br /><strong>Hard block:</strong><br />When in the soft block, if you keep checking for slots frequently, the 5-hour period will extend to 24 hours and sometimes
|
automatically adjusts the checking interval to prevent a hard block.<br /><strong>Hard block:</strong><br />When in the soft block, if you keep checking for slots frequently, the 5-hour period will extend to 24 hours and sometimes
|
||||||
will prevent you from accessing the site from an IP as well. it is best to stay out of this hard block state.<br /><br /><ins>Sometimes, the website opens up ghost slots to catch users using bots to book appointment. When such slots open up, you'll see errors telling you to that your selection is invalid. If this error happens three times in a row, stop using the extension for a couple of hours.</ins>
|
will prevent you from accessing the site from an IP as well. it is best to stay out of this hard block state.<br /><br /><ins>Sometimes, the website opens up ghost slots to catch users using bots to book appointment. When such slots open up, you'll see errors telling you to that your selection is invalid. If this error happens three times in a row, stop using the extension for a couple of hours.</ins>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="accordian-element">
|
<div class="accordian-element">
|
||||||
<h2 class="accordion-header">
|
<h2 class="accordion-header">
|
||||||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapse-4" aria-expanded="false" aria-controls="collapse-4">
|
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapse-4" aria-expanded="false" aria-controls="collapse-4">
|
||||||
Alright, how do I use this extension?
|
Alright, how do I use this extension?
|
||||||
</button>
|
</button>
|
||||||
</h2>
|
</h2>
|
||||||
<div id="collapse-4" class="accordion-collapse collapse" data-bs-parent="#faqs-accordion">
|
<div id="collapse-4" class="accordion-collapse collapse" data-bs-parent="#faqs-accordion">
|
||||||
<p class="accordion-body m-0">
|
<p class="accordion-body m-0">
|
||||||
The extension is intuitive to use. It'll show you dialogs for you to act on or provide information. Apart from that you can control things like checking frequency and other options. To access these settings pin the AIS Visa Auto Rescheduler extension
|
The extension is intuitive to use. It'll show you dialogs for you to act on or provide information. Apart from that you can control things like checking frequency and other options. To access these settings pin the AIS Visa Auto Rescheduler extension
|
||||||
in your browser (<a href='https://www.youtube.com/watch?v=lYwGngJS7og&t=33s' target='_blank'>How to pin extension</a>). Changes done here are autosaved.<br />In case you want to change the details you provided
|
in your browser (<a href='https://www.youtube.com/watch?v=lYwGngJS7og&t=33s' target='_blank'>How to pin extension</a>). Changes done here are autosaved.<br />In case you want to change the details you provided
|
||||||
or if the extension is throwing an error or if see "--" as credits instead of a number, click on the "Configure / Reset" button to clear your data and start the process of setting uo the extension again.
|
or if the extension is throwing an error or if see "--" as credits instead of a number, click on the "Configure / Reset" button to clear your data and start the process of setting uo the extension again.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
<script src="../js/bootstrap.min.js"></script>
|
<script src="../js/bootstrap.min.js"></script>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
Loading…
Reference in New Issue
Block a user