Skip to content

Commit e08faea

Browse files
committed
New: Separate order of browsing and reading
1 parent 6423fe9 commit e08faea

6 files changed

Lines changed: 56 additions & 18 deletions

File tree

‎CHANGELOG.md‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
1010

1111
- Extract tracking chapter/volume also from image names [`2218bfb`](https://github.com/ollm/OpenComic/commit/2218bfbb76f14fb5c53414ddef489a16198914d5)
1212
- Tracking also by current page/image chapter/volume [`5ff5932`](https://github.com/ollm/OpenComic/commit/5ff59327b1ea7f2c8cc76d228bcf7ca27e9da702)
13-
- Pick at random button
13+
- Pick at random button [`6423fe9`](https://github.com/ollm/OpenComic/commit/6423fe93ea8cef5624a8ad97a61ff599d58688f0)
14+
- Separate order of browsing and reading
1415

1516
##### 🐛 Bug Fixes
1617

‎scripts/dom.js‎

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -255,8 +255,8 @@ async function readFilesIndexPage(path, mainPath, fromGoBack, notAutomaticBrowsi
255255

256256
// Get comic reading progress image
257257
let _readingProgress = storage.get('readingProgress');
258-
let readingProgress = _readingProgress[mainPath] || false;
259-
let readingProgressCurrentPath = (mainPath != path) ? (_readingProgress[path] || false) : false;
258+
let readingProgress = _readingProgress[mainPath]?.path ? _readingProgress[mainPath] : false;
259+
let readingProgressCurrentPath = (mainPath != path) ? (_readingProgress[path]?.path ? _readingProgress[path] : false) : false;
260260

261261
// const isCompressed = fileManager.isCompressed(fileManager.firstCompressedFile(path));
262262
const isCompressed = fileManager.isCompressed(path);
@@ -327,6 +327,11 @@ async function readFilesIndexPage(path, mainPath, fromGoBack, notAutomaticBrowsi
327327
{
328328
let first;
329329

330+
if(file.files)
331+
file.files = fileManager.sort(file.files, {extraKey: 'Reading'});
332+
333+
file.updateConfig({sort: {extraKey: 'Reading'}});
334+
330335
try
331336
{
332337
first = await file.images(1);
@@ -372,8 +377,8 @@ async function loadFilesIndexPage(files, file, animation, path, keepScroll, main
372377
// Get comic reading progress image
373378
let _readingProgress = storage.get('readingProgress');
374379

375-
let readingProgress = _readingProgress[mainPath] || false;
376-
let readingProgressCurrentPath = (mainPath != path) ? (_readingProgress[path] || false) : false;
380+
let readingProgress = _readingProgress[mainPath]?.path ? _readingProgress[mainPath] : false;
381+
let readingProgressCurrentPath = (mainPath != path) ? (_readingProgress[path]?.path ? _readingProgress[path] : false) : false;
377382

378383
if(files)
379384
{
@@ -2033,6 +2038,8 @@ function setCurrentPageVars(page, _indexLabel = false)
20332038
extraKey = 'RecentlyOpened';
20342039
else if(page == 'index')
20352040
extraKey = 'Index';
2041+
else if(page == 'reading')
2042+
extraKey = 'Reading';
20362043

20372044
const sortAndViewOpds = config.sortAndView.opds || defaultSortAndView;
20382045

@@ -2044,7 +2051,7 @@ function setCurrentPageVars(page, _indexLabel = false)
20442051
view: sortAndView ? sortAndView.view : config['view'+extraKey],
20452052
sort: sortAndView ? sortAndView.sort : config['sort'+extraKey],
20462053
sortInvert: sortAndView ? sortAndView.sortInvert : config['sortInvert'+extraKey],
2047-
foldersFirst: sortAndView ? false : (config['foldersFirst'+extraKey] || false),
2054+
foldersFirst: sortAndView ? true : (config['foldersFirst'+extraKey] || false),
20482055
boxes: (page == 'recently-opened' || page == 'browsing') ? false : true,
20492056
continueReading: sortAndView ? sortAndView.continueReading : config['continueReading'+extraKey],
20502057
recentlyAdded: sortAndView ? sortAndView.recentlyAdded : config['recentlyAdded'+extraKey],
@@ -2097,6 +2104,8 @@ function changeView(mode, page)
20972104
extraKey = 'RecentlyOpened';
20982105
else if(page == 'index')
20992106
extraKey = 'Index';
2107+
else if(page == 'reading')
2108+
extraKey = 'Reading';
21002109

21012110
if(mode != config['view'+extraKey])
21022111
{
@@ -2148,6 +2157,8 @@ function changeViewModuleSize(size, end, page)
21482157
extraKey = 'RecentlyOpened';
21492158
else if(page == 'index')
21502159
extraKey = 'Index';
2160+
else if(page == 'reading')
2161+
extraKey = 'Reading';
21512162

21522163
if(size != config['viewModuleSize'+extraKey])
21532164
{
@@ -2209,6 +2220,8 @@ function changeSort(type, mode, page)
22092220
extraKey = 'RecentlyOpened';
22102221
else if(page == 'index')
22112222
extraKey = 'Index';
2223+
else if(page == 'reading')
2224+
extraKey = 'Reading';
22122225

22132226
if(type == 1)
22142227
{
@@ -2642,6 +2655,8 @@ async function openComic(animation = true, path = true, mainPath = true, end = f
26422655
fileManager.revokeAllObjectURL();
26432656
workers.clean('convertImageToBlob');
26442657

2658+
dom.setCurrentPageVars('reading');
2659+
26452660
// Start reading comic
26462661
if(config.readingStartReadingInFullScreen && !fromNextAndPrev && !fromGoBack)
26472662
{
@@ -2676,7 +2691,7 @@ async function openComic(animation = true, path = true, mainPath = true, end = f
26762691

26772692
try
26782693
{
2679-
files = await file.read({filtered: false});
2694+
files = await file.read({filtered: false, sort: {extraKey: 'Reading'}});
26802695
}
26812696
catch(error)
26822697
{

‎scripts/file-manager.js‎

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ var file = function(path, _config = false) {
8080
}
8181

8282
if(this.config.sort)
83-
files = sort(files);
83+
files = sort(files, this.config.sort);
8484

8585
if(this.config.only && typeof this.config.only === 'number')
8686
files = this.only(files);
@@ -3301,13 +3301,15 @@ function filtered(files, specialFiles = false, ignoreFiles = true)
33013301
return filtered;
33023302
}
33033303

3304-
function sort(files)
3304+
function sort(files, options = {})
33053305
{
33063306
if(files)
33073307
{
3308-
let sort = config.sort;
3309-
let sortInvert = config.sortInvert;
3310-
let foldersFirst = config.foldersFirst;
3308+
const extraKey = options?.extraKey ?? '';
3309+
3310+
const sort = config['sort'+extraKey];
3311+
const sortInvert = config['sortInvert'+extraKey];
3312+
const foldersFirst = config['foldersFirst'+extraKey];
33113313

33123314
let order = '';
33133315

‎scripts/migration.js‎

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,19 @@ function migrateSomeDataNewReadingProgress(data)
361361
return data;
362362
}
363363

364+
function migrateSeparateOrderOfBrowsingAndReading(data)
365+
{
366+
console.time('Migration: separateOrderOfBrowsingAndReading');
367+
368+
data.config.sortReading = data.config.sort;
369+
data.config.sortInvertReading = data.config.sortInvert;
370+
data.config.foldersFirstReading = data.config.foldersFirst;
371+
372+
console.timeEnd('Migration: separateOrderOfBrowsingAndReading');
373+
374+
return data;
375+
}
376+
364377
function start(data)
365378
{
366379
let changes = data.config.changes;
@@ -400,6 +413,9 @@ function start(data)
400413
if(changes < 125) // Add the index value to new page value
401414
data = migrateSomeDataNewReadingProgress(data);
402415

416+
if(changes < 128) // Separate order of browsing and reading
417+
data = migrateSeparateOrderOfBrowsingAndReading(data);
418+
403419
data = opds.addNewDefaultCatalogs(data, changes);
404420

405421
return data;

‎scripts/storage.js‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
const safe = require(p.join(appDir, 'scripts/storage/safe.js'));
22

3-
const changes = 127; // Update this if readingPagesConfig is updated
3+
const changes = 128; // Update this if readingPagesConfig is updated
44

55
const readingPagesConfig = {
66
readingConfigName: '',
@@ -111,15 +111,18 @@ const storageDefault = {
111111
systemNightMode: false,
112112
zoomFactor: 1,
113113
foldersFirst: true,
114+
foldersFirstReading: true,
114115
view: 'module',
115116
viewIndex: 'module',
116117
viewRecentlyOpened: 'module',
117118
sort: 'name-numeric',
118119
sortIndex: 'name',
119120
sortRecentlyOpened: 'last-opened',
121+
sortReading: 'name-numeric',
120122
sortInvert: false,
121123
sortInvertIndex: false,
122124
sortInvertRecentlyOpened: false,
125+
sortInvertReading: false,
123126
continueReadingIndex: true,
124127
continueReadingRecentlyOpened: true,
125128
recentlyAddedIndex: true,
@@ -144,6 +147,7 @@ const storageDefault = {
144147
view: 'module',
145148
sort: 'name',
146149
sortInvert: false,
150+
foldersFirst: true,
147151
continueReading: true,
148152
recentlyAdded: true,
149153
viewModuleSize: 150,

‎templates/reading.elements.menus.html‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -250,19 +250,19 @@
250250
<div class="menu-simple elevation-2" style="width: 256px;">
251251
<div class="menu-simple-content">
252252
<div>
253-
<div class="menu-simple-element menu-simple-element-little sort-name gamepad-item{{#compare page.sort '==' 'name'}} s{{/compare}}" onclick="dom.changeSort(1, 'name', 'browsing')">{{language.global.sort.name}}</div>
254-
<div class="menu-simple-element menu-simple-element-little sort-numeric gamepad-item{{#compare page.sort '==' 'numeric'}} s{{/compare}}" onclick="dom.changeSort(1, 'numeric', 'browsing')">{{language.global.sort.number}}</div>
255-
<div class="menu-simple-element menu-simple-element-little sort-name-numeric gamepad-item{{#compare page.sort '==' 'name-numeric'}} s{{/compare}}" onclick="dom.changeSort(1, 'name-numeric', 'browsing')">{{language.global.sort.nameNumber}}</div>
253+
<div class="menu-simple-element menu-simple-element-little sort-name gamepad-item{{#compare page.sort '==' 'name'}} s{{/compare}}" onclick="dom.changeSort(1, 'name', 'reading')">{{language.global.sort.name}}</div>
254+
<div class="menu-simple-element menu-simple-element-little sort-numeric gamepad-item{{#compare page.sort '==' 'numeric'}} s{{/compare}}" onclick="dom.changeSort(1, 'numeric', 'reading')">{{language.global.sort.number}}</div>
255+
<div class="menu-simple-element menu-simple-element-little sort-name-numeric gamepad-item{{#compare page.sort '==' 'name-numeric'}} s{{/compare}}" onclick="dom.changeSort(1, 'name-numeric', 'reading')">{{language.global.sort.nameNumber}}</div>
256256
<div class="menu-simple-text gamepad-item">
257257
{{language.global.sort.foldersFirst}}
258-
<div class="switch{{#if page.foldersFirst}} a{{/if}}" on="dom.changeSort(3, true, false)" off="dom.changeSort(3, false, false)">
258+
<div class="switch{{#if page.foldersFirst}} a{{/if}}" on="dom.changeSort(3, true, 'reading')" off="dom.changeSort(3, false, 'reading')">
259259
<div></div>
260260
<svg viewBox="0 0 52 32"><path d="M 8,0 C 3.58,0 0,3.58 0,8 0,12.42 3.58,16 8,16 8,16 8,16 8,16 12.42,16 16,12.42 16,8 16,3.58 12.42,0 8,0 8,0 8,0 8,0 Z"></path></svg>
261261
</div>
262262
</div>
263263
<div class="menu-simple-text gamepad-item">
264264
{{language.global.sort.invert}}
265-
<div class="switch{{#if page.sortInvert}} a{{/if}}" on="dom.changeSort(2, true, 'browsing')" off="dom.changeSort(2, false, 'browsing')">
265+
<div class="switch{{#if page.sortInvert}} a{{/if}}" on="dom.changeSort(2, true, 'reading')" off="dom.changeSort(2, false, 'reading')">
266266
<div></div>
267267
<svg viewBox="0 0 52 32"><path d="M 8,0 C 3.58,0 0,3.58 0,8 0,12.42 3.58,16 8,16 8,16 8,16 8,16 12.42,16 16,12.42 16,8 16,3.58 12.42,0 8,0 8,0 8,0 8,0 Z"></path></svg>
268268
</div>

0 commit comments

Comments
 (0)