@@ -2013,26 +2013,45 @@ const Receiver = {
20132013 // Smart download: native app (Capacitor) uses Filesystem + Share,
20142014 // browser falls back to the classic <a download> logic.
20152015 if ( window . Capacitor && window . Capacitor . isNative ) {
2016- try {
2017- const { Filesystem, Share } = window . Capacitor . Plugins ;
2018- const reader = new FileReader ( ) ;
2019- reader . readAsDataURL ( blob ) ;
2020- reader . onloadend = async ( ) => {
2021- const base64data = reader . result . split ( ',' ) [ 1 ] ;
2016+ // Весь async-поток обёрнут в try/catch, иначе ошибки из
2017+ // onloadend/Filesystem/Share уходят в unhandled rejection и
2018+ // Android WebView глушит их молча (кажется, что ничего не происходит).
2019+ ( async ( ) => {
2020+ try {
2021+ const { Filesystem, Share } = window . Capacitor . Plugins ;
2022+ console . log ( '[Download] native branch, filename=' , filename , 'blobSize=' , blob . size ) ;
2023+
2024+ // 1. Blob → base64
2025+ const base64data = await new Promise ( ( resolve , reject ) => {
2026+ const reader = new FileReader ( ) ;
2027+ reader . onloadend = ( ) => {
2028+ if ( reader . error ) reject ( reader . error ) ;
2029+ else resolve ( reader . result . split ( ',' ) [ 1 ] ) ;
2030+ } ;
2031+ reader . onerror = ( ) => reject ( reader . error ) ;
2032+ reader . readAsDataURL ( blob ) ;
2033+ } ) ;
2034+ console . log ( '[Download] base64 ready, length=' , base64data . length ) ;
2035+
2036+ // 2. Сохранение во временную папку документов
20222037 const savedFile = await Filesystem . writeFile ( {
20232038 path : filename ,
20242039 data : base64data ,
20252040 directory : 'DOCUMENTS'
20262041 } ) ;
2042+ console . log ( '[Download] saved to' , savedFile . uri ) ;
2043+
2044+ // 3. Нативное окно Share
20272045 await Share . share ( {
20282046 title : filename ,
20292047 url : savedFile . uri
20302048 } ) ;
2031- } ;
2032- } catch ( err ) {
2033- console . error ( '[Download] Ошибка нативного сохранения:' , err ) ;
2034- Utils . toast ( 'Не удалось сохранить файл' , 'error' ) ;
2035- }
2049+ console . log ( '[Download] share ok' ) ;
2050+ } catch ( err ) {
2051+ console . error ( '[Download] Ошибка нативного сохранения:' , err ) ;
2052+ Utils . toast ( 'Не удалось сохранить файл: ' + ( err && err . message ? err . message : err ) , 'error' ) ;
2053+ }
2054+ } ) ( ) ;
20362055 } else {
20372056 const url = URL . createObjectURL ( blob ) ;
20382057 const a = document . createElement ( 'a' ) ; a . href = url ; a . download = filename ; a . click ( ) ;
0 commit comments