MOBILE-4616 chore: Move waitForResizeDone to CoreWait

main
Pau Ferrer Ocaña 2024-07-16 15:13:10 +02:00
parent 6303769f0c
commit ab7b69c262
4 changed files with 35 additions and 19 deletions

View File

@ -1045,7 +1045,7 @@ export class CoreEditorRichTextEditorComponent implements OnInit, AfterViewInit,
* Window resized. * Window resized.
*/ */
protected async windowResized(): Promise<void> { protected async windowResized(): Promise<void> {
await CoreDomUtils.waitForResizeDone(); await CoreWait.waitForResizeDone();
this.isPhone = CoreScreen.isMobile; this.isPhone = CoreScreen.isMobile;
this.maximizeEditorSize(); this.maximizeEditorSize();

View File

@ -1715,24 +1715,11 @@ export class CoreDomUtilsProvider {
* @param windowHeight Initial window height. * @param windowHeight Initial window height.
* @param retries Number of retries done. * @param retries Number of retries done.
* @returns Promise resolved when done. * @returns Promise resolved when done.
*
* @deprecated since 4.5. Use CoreWait.waitForResizeDone instead.
*/ */
async waitForResizeDone(windowWidth?: number, windowHeight?: number, retries = 0): Promise<void> { async waitForResizeDone(windowWidth?: number, windowHeight?: number, retries = 0): Promise<void> {
if (!CorePlatform.isIOS()) { return CoreWait.waitForResizeDone(windowWidth, windowHeight, retries);
return; // Only wait in iOS.
}
windowWidth = windowWidth || window.innerWidth;
windowHeight = windowHeight || window.innerHeight;
if (windowWidth != window.innerWidth || windowHeight != window.innerHeight || retries >= 10) {
// Window size changed or max number of retries reached, stop.
return;
}
// Wait a bit and try again.
await CoreWait.wait(50);
return this.waitForResizeDone(windowWidth, windowHeight, retries+1);
} }
/** /**

View File

@ -13,10 +13,10 @@
// limitations under the License. // limitations under the License.
import { CoreCancellablePromise } from '@classes/cancellable-promise'; import { CoreCancellablePromise } from '@classes/cancellable-promise';
import { CoreDomUtils } from '@services/utils/dom';
import { CoreUtils } from '@services/utils/utils'; import { CoreUtils } from '@services/utils/utils';
import { CoreEventObserver } from '@singletons/events'; import { CoreEventObserver } from '@singletons/events';
import { CorePlatform } from '@services/platform'; import { CorePlatform } from '@services/platform';
import { CoreWait } from './wait';
/** /**
* Singleton with helper functions for dom. * Singleton with helper functions for dom.
@ -214,7 +214,7 @@ export class CoreDom {
*/ */
static onWindowResize(resizeFunction: (ev?: Event) => void, debounceDelay = 20): CoreEventObserver { static onWindowResize(resizeFunction: (ev?: Event) => void, debounceDelay = 20): CoreEventObserver {
const resizeListener = CoreUtils.debounce(async (ev?: Event) => { const resizeListener = CoreUtils.debounce(async (ev?: Event) => {
await CoreDomUtils.waitForResizeDone(); await CoreWait.waitForResizeDone();
resizeFunction(ev); resizeFunction(ev);
}, debounceDelay); }, debounceDelay);

View File

@ -13,6 +13,7 @@
// limitations under the License. // limitations under the License.
import { CoreCancellablePromise } from '@classes/cancellable-promise'; import { CoreCancellablePromise } from '@classes/cancellable-promise';
import { CorePlatform } from '@services/platform';
/** /**
* Singleton with helper functions to wait. * Singleton with helper functions to wait.
@ -83,6 +84,34 @@ export class CoreWait {
); );
} }
/**
* In iOS the resize event is triggered before the window size changes. Wait for the size to change.
* Use of this function is discouraged. Please use CoreDom.onWindowResize to check window resize event.
*
* @param windowWidth Initial window width.
* @param windowHeight Initial window height.
* @param retries Number of retries done.
* @returns Promise resolved when done.
*/
static async waitForResizeDone(windowWidth?: number, windowHeight?: number, retries = 0): Promise<void> {
if (!CorePlatform.isIOS()) {
return; // Only wait in iOS.
}
windowWidth = windowWidth || window.innerWidth;
windowHeight = windowHeight || window.innerHeight;
if (windowWidth != window.innerWidth || windowHeight != window.innerHeight || retries >= 10) {
// Window size changed or max number of retries reached, stop.
return;
}
// Wait a bit and try again.
await CoreWait.wait(50);
return CoreWait.waitForResizeDone(windowWidth, windowHeight, retries+1);
}
} }
/** /**