Template
1
0
Fork 0
mirror of https://codeberg.org/forgejo/forgejo synced 2024-11-25 11:16:11 +01:00

Remove assertion debug code for show/hide refactoring (#23576)

When doing the refactoring:

* #22950

I added some debug mode code (assertShown) to help to catch bugs, it did
catch some bugs like:

* #23074


If it has been proved that there is no more bugs, this assertion could
be removed easily and clearly.

Feel free to decide when to remove it (feel free to convert it from
Draft to Ready for Review).


cc: @silverwind
This commit is contained in:
wxiaoguang 2023-04-02 12:03:00 +08:00 committed by GitHub
parent c9d7c83e30
commit fcb9ef8788
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1,23 +1,3 @@
function getComputedStyleProperty(el, prop) {
const cs = el ? window.getComputedStyle(el) : null;
return cs ? cs[prop] : null;
}
function isShown(el) {
return getComputedStyleProperty(el, 'display') !== 'none';
}
function assertShown(el, expectShown) {
if (window.config.runModeIsProd) return;
// to help developers to catch display bugs, this assertion can be removed after next release cycle or if it has been proved that there is no bug.
if (expectShown && !isShown(el)) {
throw new Error('element is hidden but should be shown');
} else if (!expectShown && isShown(el)) {
throw new Error('element is shown but should be hidden');
}
}
function elementsCall(el, func, ...args) { function elementsCall(el, func, ...args) {
if (typeof el === 'string' || el instanceof String) { if (typeof el === 'string' || el instanceof String) {
el = document.querySelectorAll(el); el = document.querySelectorAll(el);
@ -41,16 +21,10 @@ function elementsCall(el, func, ...args) {
function toggleShown(el, force) { function toggleShown(el, force) {
if (force === true) { if (force === true) {
el.classList.remove('gt-hidden'); el.classList.remove('gt-hidden');
assertShown(el, true);
} else if (force === false) { } else if (force === false) {
el.classList.add('gt-hidden'); el.classList.add('gt-hidden');
assertShown(el, false);
} else if (force === undefined) { } else if (force === undefined) {
const wasShown = window.config.runModeIsProd ? undefined : isShown(el);
el.classList.toggle('gt-hidden'); el.classList.toggle('gt-hidden');
if (wasShown !== undefined) {
assertShown(el, !wasShown);
}
} else { } else {
throw new Error('invalid force argument'); throw new Error('invalid force argument');
} }