-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhas cart changed.html
More file actions
103 lines (52 loc) · 2.1 KB
/
has cart changed.html
File metadata and controls
103 lines (52 loc) · 2.1 KB
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
<script>
const hasCartChanged = $element => {
/*
has cart changed
License : < https://bit.ly/3MtSOLx >
Version : 0.1d0
SS Versions : 7.1, 7.0
Dependencies : jQuery
Note : cart page observe changes
By : Thomas Creedon < http://www.tomsWeb.consulting/ >
*/
let selector = 'cart-container';
if ( ! $element.hasClass ( selector ) ) return;
const key = 'ssCartDigestHex';
const digestHexOriginal = localStorage.getItem ( key );
const digestMessage = async ( message ) => {
const msgUint8 = new TextEncoder ( ) // encode as (utf-8) Uint8Array
.encode ( message );
const hashBuffer = await crypto // hash the message
.subtle
.digest ( 'SHA-1', msgUint8 );
// convert buffer to byte array
let hashArray = new Uint8Array ( hashBuffer )
hashArray = Array.from ( hashArray );
const hashHex = hashArray // convert bytes to hex string
.map ( b => b.toString ( 16 ).padStart ( 2, '0' ) )
.join ( '' );
return hashHex;
};
const text = $element
.parents ( '#sqs-cart-container' )
.html ( );
const $status = $( `<div>
<p class="twc-has-cart-changed">
Checking please hold...
</p>
</div>` )
.prependTo ( '.system-page' )
.find ( ':last' );
digestMessage ( text )
.then ( digestHex => {
let text;
localStorage.setItem ( key, digestHex );
if ( digestHex == digestHexOriginal || digestHexOriginal == null ) {
text = 'The cart appears not to have changed.';
} else {
text = 'The cart has changed! 🤯';
}
$status.text ( text );
} );
};
</script>