PageSourceSearch

https://eboox.app/self/js/driveScript.js?v=08022021.1

js eboox.app collected 2026-10-01 23:54:15 UTC 16,468 bytes, 503 lines download raw bytes

1var booksArray = [];
2var shelvesArray = [];
3var authorsArray = [];
4var baseBooksArray = [];
5var hiddenBooksUuid = [];
6var userData;
7var completedBooksUuid = [];
8var oldJsonName = "345275cdc30f0956d65371a52557746e";
9var jsonName = "a8bf5193e775e758d83de163f2c64494";
10var jsonVFlag = false;
11var allFilesOld = [];
12var allFilesNew = [];
13var allSyncFiles = [];
14
15function gAuthorise(){
16	loadClient();
17	// authenticate().then(loadClient);
18}
19
20function authenticate() {
21	return gapi.auth2.getAuthInstance()
22		.signIn({scope: "https://www.googleapis.com/auth/drive.appdata https://www.googleapis.com/auth/drive.file", prompt: "consent"})
23			.then(
24				function(response){ 
25					$(".authWaitingText").hide();
26					// console.log("Sign-in successful"); 
27					// console.log(response.Qt.zu);
28					// document.cookie = "eBooxUserMail=" + response.Qt.zu + ";max-age="+(3600*24*7);
29					document.cookie = "eBooxUserMail= ;max-age="+(3600*24*7);
30				// console.log("--------");
31				// console.log(response);
32				// console.log("--------");
33
34				// document.location="/self";
35					// loadClient();
36					if (window.location.pathname.substring(window.location.pathname.length-6) != '/self/'){
37						window.open(
38						  'http://eboox.app/self/',
39						  '_blank' // <- This is what makes it open in a new window.
40						);
41					} else {
42						loadClient();
43					}
44				},
45				function(err) { 
46					console.error("Error signing in", err); 
47					loadClient();
48				}
49			);
50}
51
52function loadClient() {
53	gapi.client.setApiKey("AIzaSyAoFUg88n4bMT80WxSySP0Y7JqZLZHsMlg");
54	return gapi.client.load("https://content.googleapis.com/discovery/v1/apis/drive/v3/rest")
55		.then(
56			function(response) { 
57				var request = gapi.client.drive.about.get({'fields': 'user'});
58				request.execute(function(userDataResp) {
59					userData = userDataResp;
60					changeUserInfoPanel();
61				});
62				// console.log("GAPI client loaded for API"); 
63				// console.log(gapi.client)
64				execute();
65			},
66			function(err) { 
67				console.error("Error loading GAPI client for API", err); 
68			}
69		);
70}
71
72function execute() {
73	return gapi.client.drive.files.list({
74		q: "name='" + jsonName + "'",
75		spaces: 'appDataFolder'
76	})
77		.then(
78			function(response) {
79				if (response.result.files.length == 0){
80					if (!jsonVFlag){
81						jsonName = oldJsonName;
82						execute();
83						jsonVFlag = true;
84					} else {
85						window.location.href = "http://eboox.app/self/empty.php";
86					}
87					// window.location.href = "empty.php";
88				} else {
89					// console.log(gapi.auth.getToken().access_token);
90					// try {
91					// 	document.cookie = 'eBooxAT='+gapi.auth.getToken().access_token+';';
92					// }
93					// catch (e){
94
95					// }
96					preloaderAnimation();
97				}
98				try {
99					allFilesOld = response.result.files;
100					response.result.files[0].id;
101				} catch (e){
102					jsonName = oldJsonName;
103					jsonVFlag = true;
104					execute();
105					return false;
106				}
107				allFilesNew = response.result.files;
108				return gapi.client.drive.files.get({
109					fileId: response.result.files[0].id,
110					alt:'media'
111				})
112					.then(
113						function(response) {
114
115
116							return gapi.client.drive.files.list({
117								q: "name='5dc743a2b457a79343c50d298858dd8d'",
118								spaces: 'appDataFolder'
119							})
120								.then(
121									function(responseSync) {
122										allSyncFiles = responseSync.result.files;
123										if (responseSync.result.files.length > 0){
124											return gapi.client.drive.files.get({
125												fileId: responseSync.result.files[0].id,
126												alt:'media'
127											})
128												.then(
129													function(responseSync){
130														// console.log(responseSync);
131														// console.log(response.result);
132
133														var progressJsonArray = [];
134
135														if (responseSync.result.length > 0){
136															progressJsonArray = responseSync.result;
137															// console.log(progressJsonArray);
138														}
139
140														var isLibraryEmpty = true;
141														for (var i = 0; i<response.result.bookSyncDtos.length; i++){
142															if (!response.result.bookSyncDtos[i].deleted){
143																isLibraryEmpty = false;
144															}
145														}
146														if (isLibraryEmpty) {
147      														document.location="emptybooks.php";
148														}
149
150
151														// console.log(response.result.bookSyncDtos);
152														// console.log(response);
153
154														// console.log(response);
155														booksArray = response.result.bookSyncDtos;
156
157														// console.log(progressJsonArray);
158														// console.log(booksArray);
159
160														progressJsonArray.forEach(function(item, key){
161															// console.log(item.bookUuid);
162															booksArray.forEach(function(item1, key1){
163																if (item1.uuid == item.bookUuid){
164																	// console.log(item1.title);
165																	booksArray[key1].lastActionDate = item.lastActionDate;
166																	booksArray[key1].maxReadPosition = item.maxReadPosition;
167																	booksArray[key1].readPosition = item.position;
168																}
169															});
170														});
171
172
173														// console.log(response);
174														booksArray = jQuery.grep(booksArray, function(value) {
175															return (!(value.deleted));
176														});
177														for (var i = 0; i< booksArray.length; i++){
178															if (booksArray[i].lastActionDate != 0){
179																var bookSortDate = booksArray[i].lastActionDate;
180															} else {
181																var bookSortDate = booksArray[i].creationDate;
182															}
183															booksArray[i].bookSortDate = bookSortDate;
184														}
185														booksArray.sort(function(a,b){
186															var aName = a.bookSortDate;
187															var bName = b.bookSortDate;
188															// var aName = a.lastActionDate;
189															// var bName = b.lastActionDate;
190															// if (aName == 0){
191															// 	var aName = a.creationDate;
192															// 	var bName = b.creationDate;			
193															// } 
194															return ((aName < bName) ? -1 : ((aName > bName) ? 1 : 0));		
195														});
196														booksArray.reverse();
197														
198														recentlyOpened = booksArray[0];
199
200														var findRecentlyOpenedArray = booksArray;
201														findRecentlyOpenedArray.sort(function(a,b){
202															var aName = a.lastActionDate;
203															var bName = b.lastActionDate;
204															return ((aName < bName) ? -1 : ((aName > bName) ? 1 : 0));		
205														});		
206														findRecentlyOpenedArray.reverse();
207														recentlyOpened = findRecentlyOpenedArray[0];												
208
209														var recentlyOpenedCorrect = jQuery.grep(booksArray, function(value) {
210															return (value.lastActionDate != 0);
211														});
212														if (recentlyOpenedCorrect.length > 0){
213															recentlyOpened = recentlyOpenedCorrect[0];
214														}
215
216														shelvesArray = response.result.shelfSyncDtos;
217														shelvesArray = jQuery.grep(shelvesArray, function(value) {
218															return (!(value.deleted));
219														});
220														hiddenBooksUuid = jQuery.grep(shelvesArray, function(value) {
221															return (value.shelfType == 3);
222														});
223														hiddenBooksUuid = hiddenBooksUuid[0].booksUuids;
224														completedBooksUuid = hiddenBooksUuid;
225
226														hiddenBooksUuid = jQuery.grep(shelvesArray, function(value) {
227															return (value.shelfType == 3 || value.hidden == true);
228														});
229
230														hiddenBooksUuid = [];
231														for (var i = 0; i<shelvesArray.length; i++){
232															if (shelvesArray[i].shelfType == 3 || shelvesArray[i].hidden == true){
233																shelvesArray[i].booksUuids.forEach(function(item, key){
234																	hiddenBooksUuid.push(item);
235																})
236															}
237														}
238														// console.log(hiddenBooksUuid);
239
240														booksImgArray = booksArray;
241														baseBooksArray = booksArray;
242														createBookList(booksArray);
243														createShelfList();
244														// sortFromTab();
245														sortFromList($("#sort_"+currentSortPosition),currentSortPosition);
246														getAllBooksCovers();
247
248														preloaderReady();
249
250														// избавляемся от бага с нулевой прозрачностью блока после загрузки страницы
251															$("#preloader_div").animate({
252																opacity: 1
253																}, 500, function() {
254																	setTimeout(function(){
255																		$(".preloader_mountains").animate(
256																			{
257																				opacity: 1
258																			}, 1000, function(){
259																				setTimeout(function(){
260																					$(".preloader_gradient").animate(
261																						{
262																							opacity: 1
263																						}, 1000, function(){
264
265																						}
266																					)
267																				}, 10);
268																			}
269																		);
270																		$(".preloader_upperText").animate(
271																			{
272																				opacity: 1
273																			}, 1000
274																		);
275																	}, 10);
276																}
277															);
278
279
280
281
282
283
284													}
285												)
286										} else {
287
288
289											// console.log(response.result.bookSyncDtos);
290											console.log(response);
291											booksArray = response.result.bookSyncDtos;
292											// console.log(response);
293											booksArray = jQuery.grep(booksArray, function(value) {
294												return (!(value.deleted));
295											});
296											for (var i = 0; i< booksArray.length; i++){
297												if (booksArray[i].lastActionDate != 0){
298													var bookSortDate = booksArray[i].lastActionDate;
299												} else {
300													var bookSortDate = booksArray[i].creationDate;
301												}
302												booksArray[i].bookSortDate = bookSortDate;
303											}
304											booksArray.sort(function(a,b){
305												var aName = a.bookSortDate;
306												var bName = b.bookSortDate;
307												// var aName = a.lastActionDate;
308												// var bName = b.lastActionDate;
309												// if (aName == 0){
310												// 	var aName = a.creationDate;
311												// 	var bName = b.creationDate;			
312												// } 
313												return ((aName < bName) ? -1 : ((aName > bName) ? 1 : 0));		
314											});
315											booksArray.reverse();
316											// console.log(booksArray);
317											recentlyOpened = booksArray[0];
318											shelvesArray = response.result.shelfSyncDtos;
319											shelvesArray = jQuery.grep(shelvesArray, function(value) {
320												return (!(value.deleted));
321											});
322											booksImgArray = booksArray;
323											baseBooksArray = booksArray;
324											createBookList(booksArray);
325											createShelfList();
326											// sortFromTab();
327											sortFromList($("#sort_"+currentSortPosition),currentSortPosition);
328
329											getAllBooksCovers();
330
331											preloaderReady();
332
333											// избавляемся от бага с нулевой прозрачностью блока после загрузки страницы
334												$("#preloader_div").animate({
335													opacity: 1
336													}, 500, function() {
337														setTimeout(function(){
338															$(".preloader_mountains").animate(
339																{
340																	opacity: 1
341																}, 1000, function(){
342																	setTimeout(function(){
343																		$(".preloader_gradient").animate(
344																			{
345																				opacity: 1
346																			}, 1000, function(){
347
348																			}
349																		)
350																	}, 10);
351																}
352															);
353															$(".preloader_upperText").animate(
354																{
355																	opacity: 1
356																}, 1000
357															);
358														}, 10);
359													}
360												);
361
362
363										}
364									}
365								)
366
367
368						}, 
369						function(err) { 
370							console.error("Execute error", err); 
371							loadClient();
372						}
373					);
374			}, 
375			function(err) { 
376				if (!jsonVFlag){
377					jsonName = oldJsonName;
378					jsonVFlag = true;
379					execute();
380				} else {
381					// console.error("789Execute error", err); 
382					// document.location="login.php";
383					showLoginLB();
384					setTimeout(function(){$(".authWaitingText").show()}, 2000);
385				}
386			}
387		);
388}
389
390function signOut() {
391    var auth2 = gapi.auth2.getAuthInstance();
392    auth2.signOut().then(function () {
393      // auth2.disconnect();
394	  document.cookie = 'eBooxUserMail =; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
395	  var ua = navigator.userAgent.toLowerCase(); 
396	  var uaFlag = false;
397		if (ua.indexOf('safari') != -1) { 
398		  if (ua.indexOf('chrome') > -1) {
399		      document.location="login.php";
400		      uaFlag = true;
401		  } else {
402      		document.location="/self";
403		      uaFlag = true;
404		  }
405		}
406		if (!uaFlag){
407      		document.location="login.php";
408		}
409    });
410}
411
412function logIn(){
413	authenticate();
414}
415
416gapi.load("client:auth2", function() {
417	gapi.auth2.init({client_id: "421713103968-34dhkmhoci0nv6il4nq4eirhovhsgfc5.apps.googleusercontent.com"})
418	.then(
419		function(response) { 
420			// console.log(response);
421			try {
422				// try {
423					// var testSafari = gapi.auth.getToken().access_token;
424					// console.log(gapi.auth.getToken().access_token);
425					tryDownload();
426				// } catch (e){
427					// authenticateSafari();
428				// }
429			} catch (e){
430				
431			}
432		},
433		function(err) { 
434			console.error("Error signing in", err); 
435		}
436	);
437	// console.log("ready");
438});
439
440function showLoginLB(){
441    $('#lb_login_content').load('login_light.php');
442    setTimeout(function(){$("#lb_login").show(0)}, 100);
443	// $("#lb_login").show(0);
444	$("body").css("overflow", "hidden");
445};
446
447function logInSafari(){
448	return gapi.auth2.getAuthInstance()
449		.signIn({scope: "https://www.googleapis.com/auth/drive.appdata https://www.googleapis.com/auth/drive.file", prompt: "consent"})
450		.then(
451			function(response){ 
452				// $(".authWaitingText").hide();
453				// continueSafariLoading();
454				tryDownload();
455			},
456			function(err) { 
457				$(".shineArea").css("border","none");
458				var notifyCookieLang = "ru";
459			    if (typeof getCookie("eBooxUserLang") != "undefined"){
460			    	var notifyCookieLang = getCookie("eBooxUserLang");
461			    }	
462			    if (notifyCookieLang != "ru"){
463					$(".shineArea").html('<center><div style="clear: both; height:40px"></div><img src="images/img-cat-empty-4.svg"><p style="font-size: 20px;">Due to the security policies of your browser, <br>reauthorization is required</p><div style="clear: both; height:20px"></div><div class="login_button" style="width: 234px; height: 47px; border-radius: 28px; background: #f54a66; margin: 0 auto; cursor: pointer; color:#fff; font-size: 16px; font-weight: 500; padding-top: 13px;" onclick="logInSafari(); ym(103325464,\'reachGoal\',\'authorization\');" style="padding-right: 12px;"><i class="fas fa-sync-alt"></i>&nbsp;&nbsp;<span class="l_27">ВОЙТИ</span></div></center>');
464			    }	else {
465					$(".shineArea").html('<center><div style="clear: both; height:40px"></div><img src="images/img-cat-empty-4.svg"><p style="font-size: 20px;">В связи с политиками безопасности вашего браузера,<br>необходима повторная авторизация</p><div style="clear: both; height:20px"></div><div class="login_button" style="width: 234px; height: 47px; border-radius: 28px; background: #f54a66; margin: 0 auto; cursor: pointer; color:#fff; font-size: 16px; font-weight: 500; padding-top: 13px;" onclick="logInSafari(); ym(103325464,\'reachGoal\',\'authorization\');" style="padding-right: 12px;"><i class="fas fa-sync-alt"></i>&nbsp;&nbsp;<span class="l_27">ВОЙТИ</span></div></center>');
466			    }	
467				$("#pmp_bookTitle").html("");
468			}
469		);	
470}
471
472function logInUpload(){
473	return gapi.auth2.getAuthInstance()
474		.signIn({scope: "https://www.googleapis.com/auth/drive.appdata https://www.googleapis.com/auth/drive.file", prompt: "consent"})
475		.then(
476			function(response){ 
477				// console.log(response);
478				// $(".authWaitingText").hide();
479				// continueSafariLoading();
480				$('#lb_login').hide(); 
481				$("#preLoginArea").animate({
482					opacity: 0
483				},
484				500, function(){
485					$("#preLoginArea").remove();
486				})
487			},
488			function(err) { 
489			    $('#lb_login_content').load('login_upload.php');
490			    setTimeout(function(){$("#lb_login").show(0)}, 100);
491				// $("#lb_login").show(0);
492				$("body").css("overflow", "hidden");
493			}
494		);	
495}
496
497
498
499
500
501
502
503

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.