@@ -594,11 +594,10 @@ async function addFileToTempList(fileName) {
594594// системное ограничение браузера позволяет выводить пользовательское уведомление только после алерта (в целях безопасности)
595595const beforeUnloadHandler = ( event ) => {
596596 logClientAction ( { action : "Trigger beforeunload warning" } ) ;
597- // TODO
598- // showModalNotify(["Не закрывайте вкладку расширения при записи!",
599- // "Не обновляйте вкладку расширения при записи!",
600- // "Не закрывайте браузер при записи!",
601- // "При закрытии или обновлении вкладки расширения (речь не о всплывающем окне расширения), а также закрытии самого браузера запись будет прервана!"], "Внимание!");
597+ showModalNotify ( [ "Не закрывайте вкладку расширения при записи!" ,
598+ "Не обновляйте вкладку расширения при записи!" ,
599+ "Не закрывайте браузер при записи!" ,
600+ "При закрытии или обновлении вкладки расширения (речь не о всплывающем окне расширения), а также закрытии самого браузера запись будет прервана!" ] , "Внимание!" ) ;
602601 event . preventDefault ( ) ;
603602 event . returnValue = true ;
604603} ;
@@ -607,23 +606,27 @@ window.addEventListener('beforeunload', beforeUnloadHandler);
607606
608607window . addEventListener ( 'unload' , ( ) => {
609608 logClientAction ( { action : "Tab media.html unload - save state as needPermissions" } ) ;
609+ let bState ;
610+ chrome . storage . local . get ( 'bState' ) . then ( result => {
611+ bState = result . bState ;
612+ logClientAction ( { "action" : "Get bState when media load" , bState} ) ;
613+
614+ } ) . catch ( error => {
615+ logClientAction ( { "action" : "Error getting bState when media load" , "error" : error . message } ) ;
616+ logClientAction ( { action : "Tab media.html unload - save state as needPermissions" } ) ;
617+ buttonsStatesSave ( 'needPermissions' ) ;
618+ } ) ;
610619 if ( recorders . camera || recorders . screen ) {
611- let bState ;
612- chrome . storage . local . get ( 'bState' ) . then ( result => {
613- bState = result . bState ;
614- logClientAction ( { "action" : "Get bState when media load" , bState} ) ;
615- if ( bState == 'readyUpload' || bState == 'failedUpload' ) {
616- logClientAction ( { action : `Tab media.html unload - but current state is ${ bState } ` } ) ;
617- }
618- else {
619- logClientAction ( { action : "Tab media.html unload - save state as needPermissions" } ) ;
620- buttonsStatesSave ( 'needPermissions' ) ;
621- }
622- } ) . catch ( error => {
623- logClientAction ( { "action" : "Error getting bState when media load" , "error" : error . message } ) ;
620+ if ( bState == 'readyUpload' || bState == 'failedUpload' ) {
621+ logClientAction ( { action : `Tab media.html unload - but current state is ${ bState } ` } ) ;
622+ }
623+ else {
624624 logClientAction ( { action : "Tab media.html unload - save state as needPermissions" } ) ;
625625 buttonsStatesSave ( 'needPermissions' ) ;
626- } ) ;
626+ }
627+ }
628+ if ( bState == 'readyToRecord' || bState == 'recording' ) {
629+ buttonsStatesSave ( 'needPermissions' ) ;
627630 }
628631} )
629632
@@ -770,10 +773,6 @@ chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
770773async function initSession ( formData ) {
771774 getBrowserFingerprint ( )
772775
773- await chrome . storage . local . set ( {
774- 'lastRecordTime' : new Date ( ) . toISOString ( )
775- } ) ;
776-
777776 try {
778777 const response = await fetch ( 'http://127.0.0.1:5000/start_session' , {
779778 method : 'POST' ,
@@ -792,6 +791,10 @@ async function initSession(formData) {
792791
793792 console . log ( 'sessionId успешно сохранён!' ) ;
794793 logClientAction ( { action : "Save session ID from server" , sessionId } ) ;
794+
795+ await chrome . storage . local . set ( {
796+ 'lastRecordTime' : new Date ( ) . toISOString ( )
797+ } ) ;
795798 } catch ( error ) {
796799 console . error ( "Ошибка инициализации сессии" , error ) ;
797800 await showModalNotify ( [ "Ошибка инициализации сессии" , error . message ] , "Ошибка" )
@@ -914,33 +917,25 @@ async function stopRecord() {
914917 "Файл с логами сохранен в папку загрузок по умолчанию."
915918 ] ;
916919 logClientAction ( stats ) ;
917- // После остановки записи ждём либо подтверждения подавления, либо, по истечении таймаута, выполняем уведомление
918- waitForNotificationSuppression ( ) . then ( async ( suppress ) => {
919- if ( ! suppress ) {
920- await showModalNotify (
921- stats ,
922- "Запись завершена, статистика:" ,
923- true
924- ) ;
925- }
926- } ) ;
927- if ( server_connection && ! invalidStop ) {
928- // После остановки записи ждём либо подтверждения подавления, либо, по истечении таймаута, выполняем уведомление
929- waitForNotificationSuppression ( ) . then ( async ( suppress ) => {
930- if ( ! suppress ) {
931- await showModalNotify (
932- [ "Для отправки записи необходимо нажать кнопку «Отправить» во всплывающем окне расширения прокторинга." ] ,
933- "Отправка записи" ,
934- true
935- ) ;
936- }
937- } ) ;
938- }
939920
940921 cleanup ( ) ;
941922 if ( ! server_connection ) {
942923 await deleteFiles ( ) ;
943924 }
925+
926+ await showModalNotify (
927+ stats ,
928+ "Запись завершена, статистика:" ,
929+ true
930+ ) ;
931+
932+ if ( server_connection && ! invalidStop ) {
933+ await showModalNotify (
934+ [ "Для отправки записи необходимо нажать кнопку «Отправить» во всплывающем окне расширения прокторинга." ] ,
935+ "Отправка записи" ,
936+ true
937+ ) ;
938+ }
944939 } ) . catch ( error => {
945940 console . error ( "Ошибка при остановке записи:" , error ) ;
946941 logClientAction ( { action : "Fail to stop recording" , error : error . message } ) ;
0 commit comments