@internetarchive/ia-book-actions 0.0.30-alpha3 → 0.0.30-alpha5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@internetarchive/ia-book-actions",
3
- "version": "0.0.30-alpha3",
3
+ "version": "0.0.30-alpha5",
4
4
  "description": "Bookreader actions for borrowable book",
5
5
  "author": "Internet Archive",
6
6
  "license": "AGPL-3.0-only",
@@ -5,7 +5,6 @@ export class TextGroup extends LitElement {
5
5
  return {
6
6
  texts: { type: String },
7
7
  textClass: { type: String },
8
- hasAdminBorrowedAccess: { type: Boolean },
9
8
  };
10
9
  }
11
10
 
@@ -13,16 +12,11 @@ export class TextGroup extends LitElement {
13
12
  super();
14
13
  this.texts = '';
15
14
  this.textClass = '';
16
- this.hasAdminBorrowedAccess = false;
17
15
  }
18
16
 
19
17
  render() {
20
18
  return html`
21
- <span class="variable-texts ${this.textClass}">
22
- ${this.hasAdminBorrowedAccess
23
- ? html`<slot name="sticky-access-checkbox">${this.texts}</slot>`
24
- : this.texts}
25
- </span>
19
+ <span class="variable-texts ${this.textClass}">${this.texts}</span>
26
20
  `;
27
21
  }
28
22
 
@@ -35,13 +29,12 @@ export class TextGroup extends LitElement {
35
29
  margin-left: 10px;
36
30
  vertical-align: middle;
37
31
  font-size: 1.7rem;
38
- align-items: center;
39
32
  }
40
33
  .hidden {
41
34
  display: none;
42
35
  }
43
36
  .visible {
44
- display: flex;
37
+ display: inline-block;
45
38
  }
46
39
  `;
47
40
  }
@@ -8,8 +8,8 @@ export default async function ActionsHandlerService(options) {
8
8
  const option = {
9
9
  action: null,
10
10
  identifier: '',
11
- success() {},
12
- error() {},
11
+ success() { },
12
+ error() { },
13
13
  ...options,
14
14
  };
15
15
 
@@ -30,9 +30,6 @@ export default async function ActionsHandlerService(options) {
30
30
  let formData = new FormData();
31
31
  formData.append('action', option.action);
32
32
  formData.append('identifier', option.identifier);
33
- formData.append('sticky-admin', option.stickyAccess);
34
- console.log(option.stickyAccess);
35
-
36
33
  try {
37
34
  await fetch(baseHost, {
38
35
  method: 'POST',
@@ -83,6 +83,8 @@ export default class ActionsHandler extends LitElement {
83
83
  const { category, action } = detail.event;
84
84
  this.sendEvent(category, action);
85
85
 
86
+ this.setStickyAdminAccess(true);
87
+
86
88
  // keep existing params and add new one
87
89
  const url = new URL(window.location.href);
88
90
  url.searchParams.append('admin', 1);
@@ -92,20 +94,14 @@ export default class ActionsHandler extends LitElement {
92
94
  this.addEventListener('exitAdminAccess', ({ detail }) => {
93
95
  const { category, action } = detail.event;
94
96
  this.sendEvent(category, action);
97
+
98
+ this.setStickyAdminAccess(false);
95
99
  });
96
100
 
97
101
  this.addEventListener('bookTitleBar', ({ detail }) => {
98
102
  const { category, action } = detail.event;
99
103
  this.sendEvent(category, action);
100
104
  });
101
-
102
- document.addEventListener('stickyAdminAccess', ({ detail }) => {
103
- ActionsHandlerService({
104
- action: 'toggle_sticky_admin_access', // toggle_sticky_admin_access
105
- stickyAccess: detail.hasStickyAdminAccess,
106
- identifier: this.identifier,
107
- });
108
- });
109
105
  }
110
106
 
111
107
  handleBrowseIt() {
@@ -293,4 +289,16 @@ export default class ActionsHandler extends LitElement {
293
289
  '.archive.org'
294
290
  );
295
291
  }
292
+
293
+ /**
294
+ * Set sticky admin access on or off.
295
+ * @see WEBDEV-6835
296
+ *
297
+ * @param {boolean} value - Whether to enable or disable sticky admin access.
298
+ * @returns {void}
299
+ */
300
+ setStickyAdminAccess(value) {
301
+ const domain = window.location.hostname !== 'localhost' ?? '.archive.org';
302
+ Cookies.setItem('sticky-admin-access', value, '', '/', domain);
303
+ }
296
304
  }
@@ -51,7 +51,6 @@ export const bookTitles = {
51
51
  on_waitlist: 'You are on the waitlist for this book.',
52
52
  session_expired: 'Your loan has expired.',
53
53
  unavailable: 'This book is not available at this time.',
54
- admin_borrowed: 'Default to admin access mode',
55
54
  };
56
55
 
57
56
  export class GetLendingActions {
@@ -84,7 +83,7 @@ export class GetLendingActions {
84
83
 
85
84
  adminOrPrintDisabledReadingAction() {
86
85
  return {
87
- primaryTitle: bookTitles.admin_borrowed,
86
+ primaryTitle: '',
88
87
  primaryActions: [],
89
88
  secondaryActions: [this.actionsConfig.adminOrPrintDisabledExitConfig()],
90
89
  borrowType: 'adminBorrowed',
@@ -234,8 +233,8 @@ export class GetLendingActions {
234
233
  const title = lendingStatus.available_to_browse
235
234
  ? bookTitles.available_1hr
236
235
  : lendingStatus.available_to_borrow
237
- ? bookTitles.available_14d
238
- : bookTitles.unavailable;
236
+ ? bookTitles.available_14d
237
+ : bookTitles.unavailable;
239
238
 
240
239
  return {
241
240
  primaryTitle: title,
@@ -278,16 +277,16 @@ export class GetLendingActions {
278
277
  const allBrowsableCopiesTaken =
279
278
  lendingStatus.available_browsable_copies < 1 &&
280
279
  lendingStatus.available_browsable_copies <
281
- lendingStatus.max_browsable_copies;
280
+ lendingStatus.max_browsable_copies;
282
281
  // end config
283
282
 
284
283
  const title = browsingHasExpired
285
284
  ? bookTitles.session_expired
286
285
  : !canBrowse && allBrowsableCopiesTaken
287
- ? bookTitles.being_borrowed
288
- : !canBrowse && lendingStatus.available_to_waitlist
289
- ? bookTitles.available_waitlist
290
- : bookTitles.available_1hr;
286
+ ? bookTitles.being_borrowed
287
+ : !canBrowse && lendingStatus.available_to_waitlist
288
+ ? bookTitles.available_waitlist
289
+ : bookTitles.available_1hr;
291
290
 
292
291
  // one hour borrow config
293
292
  const oneHrBorrow = browsingHasExpired
@@ -301,8 +300,8 @@ export class GetLendingActions {
301
300
  const dropdownOptions = canBrowseAndBorrow
302
301
  ? [oneHrBorrow, borrow, printDisability]
303
302
  : canBrowseHasWaitlist
304
- ? [oneHrBorrow, waitlist, printDisability]
305
- : [];
303
+ ? [oneHrBorrow, waitlist, printDisability]
304
+ : [];
306
305
  const actions = canBrowseCantBorrowCantWaitlist
307
306
  ? [oneHrBorrow, printDisability]
308
307
  : dropdownOptions;
@@ -12,7 +12,7 @@ import './components/info-icon.js';
12
12
  import { GetLendingActions } from './core/services/get-lending-actions.js';
13
13
  import { mobileContainerWidth } from './core/config/constants.js';
14
14
  import { LoanTokenPoller } from './core/services/loan-token-poller.js';
15
- import { getItem, setItem } from './core/services/doc-cookies.js';
15
+ import { setItem } from './core/services/doc-cookies.js';
16
16
 
17
17
  export const events = {
18
18
  browseExpired: 'IABookReader:BrowsingHasExpired',
@@ -37,7 +37,6 @@ export default class IABookActions extends LitElement {
37
37
  disableActionGroup: { type: Boolean },
38
38
  modal: { Object },
39
39
  tokenDelay: { type: Number },
40
- hasStickyAdminAccess: { Boolean },
41
40
  };
42
41
  }
43
42
 
@@ -56,7 +55,6 @@ export default class IABookActions extends LitElement {
56
55
  this.disableActionGroup = false;
57
56
  this.modal = undefined;
58
57
  this.tokenDelay = 120000; // 2 minutes
59
- this.hasStickyAdminAccess = false;
60
58
 
61
59
  // private props
62
60
  this.primaryActions = [];
@@ -79,9 +77,6 @@ export default class IABookActions extends LitElement {
79
77
  this.sharedObserver = new SharedResizeObserver();
80
78
  this.setupResizeObserver();
81
79
  }
82
-
83
- // manage sticky-admin-acces by cookie
84
- this.hasStickyAdminAccess = getItem('sticky-admin-access') === 'true';
85
80
  }
86
81
 
87
82
  updated(changed) {
@@ -369,22 +364,6 @@ export default class IABookActions extends LitElement {
369
364
  });
370
365
  }
371
366
 
372
- // eslint-disable-next-line class-methods-use-this
373
- toggleStickyAdminAccess() {
374
- this.hasStickyAdminAccess = !this.hasStickyAdminAccess;
375
-
376
- // set in cookies
377
- setItem('sticky-admin-access', this.hasStickyAdminAccess);
378
-
379
- document.dispatchEvent(
380
- new CustomEvent('stickyAdminAccess', {
381
- detail: {
382
- hasStickyAdminAccess: this.hasStickyAdminAccess,
383
- },
384
- })
385
- );
386
- }
387
-
388
367
  get iconClass() {
389
368
  return this.width <= mobileContainerWidth ? 'mobile' : 'desktop';
390
369
  }
@@ -401,37 +380,10 @@ export default class IABookActions extends LitElement {
401
380
  return html`<text-group
402
381
  textClass=${this.textClass}
403
382
  texts=${this.primaryTitle}
404
- ?hasAdminBorrowedAccess=${this.hasAdminBorrowedAccess}
405
383
  >
406
- ${this.hasAdminBorrowedAccess
407
- ? html`<div slot="sticky-access-checkbox">
408
- ${this.stickyAdminAccess}
409
- </div>`
410
- : ''}
411
384
  </text-group>`;
412
385
  }
413
386
 
414
- get stickyAdminAccess() {
415
- return html`
416
- <label class="stick-admin" for="sticky-admin-access">
417
- <input
418
- type="checkbox"
419
- id="sticky-admin-access"
420
- aria-label="Checkbox"
421
- ?checked=${this.hasStickyAdminAccess}
422
- @click=${this.toggleStickyAdminAccess}
423
- />
424
- <span>${this.primaryTitle}</span>
425
- </label>
426
- `;
427
- }
428
-
429
- get hasAdminBorrowedAccess() {
430
- return this.secondaryActions.some(
431
- action => action.id === 'exitAdminAccess'
432
- );
433
- }
434
-
435
387
  get hasAdminAccess() {
436
388
  return !this.lendingStatus.userHasBorrowed && this.lendingStatus.isAdmin;
437
389
  }
@@ -451,10 +403,6 @@ export default class IABookActions extends LitElement {
451
403
  justify-content: center;
452
404
  flex-wrap: wrap;
453
405
  }
454
- .stick-admin {
455
- user-select: none;
456
- cursor: pointer;
457
- }
458
406
  `;
459
407
  }
460
408
  }