aboutsummaryrefslogtreecommitdiff
path: root/misc/usps-fill-out-scheduled-pickup.js
blob: dd4256f9c53e0e9aec2dfc6453010da94bfc2be6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
// ==UserScript==
// @name        Fill out usps scheduled pickup
// @namespace   Violentmonkey Scripts
// @match       https://tools.usps.com/schedule-pickup-steps.htm*
// @grant       none
// @version     1.0
// @author      tjkeller.xyz
// @description 2/11/2024, 7:23:34 PM
// ==/UserScript==

/* First page config */
const fill = {
	emailAddress: "youremail@example.com",
	phoneNumber: "777-777-7777",
	zipCode: "60606",
	state: "IL",
	city: "CHICAGO",
	addressLineOne: "701 My Lovely Home St.",
	lastName: "Smith",
	firstName: "John"
}

/* Misc config */
const packageLocationFill = "Porch"

/* Fill funcs */
function fillInitialFields() {
	for (let fieldName in fill)
		document.getElementById(fieldName).value = fill[fieldName]
}

function fillDogField() {
	const f = document.querySelector("#second-radio-verification[name=isDogHere]")
	f.checked = true
	return f
}

function fillPackageLocation() {
	const f = document.getElementById("packageLocation")
	f.value = packageLocationFill
	return f
}

function fillPickupTime() {
	const f = document.getElementById("pickup-regular-time")
	f.click()
	return f
}

function fillPickupDate() {
	const f = document.querySelector("#schedule-pickup-cal td:not(.ui-datepicker-unselectable)") // Gets first date that is selectable
	f.click()
	return f
}

function fillTerms() {
	const f = document.querySelector(".termsConditions")
	f.checked = true
	return f
}

function fillHazmat() {
	const f = document.querySelector("#hazmat-no")
	f.checked = true
	return f
}

function scrollToDetails() {
	document.getElementById("quantityCheck").scrollIntoView()
}

function showPickupDateInStepFour(pickupDateTD) {
	const month = parseInt(pickupDateTD.dataset.month) + 1
	const year	= pickupDateTD.dataset.year
	const day	 = pickupDateTD.firstElementChild.innerText

	const date = `${month}-${day}-${year}`

	const dateElement = document.createElement("div")
	dateElement.class = "step-four-top-header"
	dateElement.innerHTML =	`<p class="step-four-row-header"></p>`
	dateElement.innerHTML += `<p class="step-four-row-header" style="font-weight:bold;">Date of Pickup: ${date}</p>`

	const container = document.querySelector("div.pickup-summary-gray-box-wrapper div")
	const sibiling = container.querySelector("div.step-four-top-header")
	container.insertBefore(dateElement, sibiling)
	return dateElement
}

/* Start */
fillInitialFields()

document.querySelector("#webToolsAddressCheck").addEventListener("click", () => {
	const magicChange = new Event("change")

	fillDogField()			 .dispatchEvent(magicChange)
	fillPackageLocation().dispatchEvent(magicChange)

	fillPickupTime() // Works through click

	setTimeout(() => {
		showPickupDateInStepFour(fillPickupDate()) // Need to wait for this (calendar) to load in first since it's loaded dynamically
		fillHazmat()
		fillTerms()
		scrollToDetails()
	}, 750)
})