
const messageType = {
    config: 0,
    writeFile: 1, 
};

const { createSharedArrayBuffer, getFileSystemManager } = worker;
const fs = getFileSystemManager ? getFileSystemManager() : null;
function compareVersion(_v1, _v2) {
    return (_v1
        .split('.')
        .map(v => v.padStart(2, '0'))
        .join('')
        >= _v2
            .split('.')
            .map(v => v.padStart(2, '0'))
            .join(''));
}
worker.onMessage((res) => {
    const { type, payload } = res;
    if (type === messageType.writeFile) {
        const { filePath, data, isSharedBuffer } = payload;
        let content = data;
        if (isSharedBuffer) {
            content = data.buffer;
        }
        if (!fs) {
            console.error('getFileSystemManager不存在');
            return;
        }
        fs.writeFile({
            filePath,
            data: content,
            success: () => {
                worker.postMessage({
                    type: messageType.writeFile,
                    payload: {
                        isok: true,
                        filePath,
                    },
                });
            },
            fail: (err) => {
                worker.postMessage({
                    type: messageType.writeFile,
                    payload: {
                        isok: false,
                        filePath,
                        err,
                    },
                });
            },
        });
    }
    if (type === messageType.config) {
        const { systemInfo } = payload;
        const { platform, version } = systemInfo;
        // 安卓才需要使用worker写文件
        const isAndroid = platform.toLocaleLowerCase() === 'android';
        
        const isClientValid = compareVersion(version, '8.0.18');
        worker.postMessage({
            type: messageType.config,
            payload: {
                supportWorkerFs: isAndroid && !!fs && isClientValid,
                supportSharedBuffer: isAndroid && !!createSharedArrayBuffer,
            },
        });
    }
});
