Compare commits
	
		
			No commits in common. "a286e814b2733c65a2eceba4f9018f63179e6837" and "07e3a9fcfa108072f6b091619f522fd13013bebc" have entirely different histories.
		
	
	
		
			a286e814b2
			...
			07e3a9fcfa
		
	
		
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| 
						 | 
				
			
			@ -80,81 +80,49 @@ function broadcastToPorts(message: any) {
 | 
			
		|||
  });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// function initDailyReloadAlarm() {
 | 
			
		||||
//   // Tên alarm
 | 
			
		||||
//   const alarmName = "dailyReload";
 | 
			
		||||
 | 
			
		||||
//   // Xóa alarm cũ nếu có
 | 
			
		||||
//   chrome.alarms.clear(alarmName, () => {
 | 
			
		||||
//     // Lấy thời gian hiện tại
 | 
			
		||||
//     const now = new Date();
 | 
			
		||||
 | 
			
		||||
//     // Thiết lập 2 giờ sáng ngày hôm nay hoặc ngày mai nếu đã quá giờ
 | 
			
		||||
//     const firstTrigger = new Date();
 | 
			
		||||
//     firstTrigger.setHours(2, 0, 0, 0); // 2:00:00
 | 
			
		||||
 | 
			
		||||
//     if (firstTrigger.getTime() <= now.getTime()) {
 | 
			
		||||
//       // Nếu đã qua 2h sáng hôm nay, đặt vào ngày mai
 | 
			
		||||
//       firstTrigger.setDate(firstTrigger.getDate() + 1);
 | 
			
		||||
//     }
 | 
			
		||||
 | 
			
		||||
//     const delayInMinutes = (firstTrigger.getTime() - now.getTime()) / 1000 / 60;
 | 
			
		||||
 | 
			
		||||
//     // Tạo alarm
 | 
			
		||||
//     chrome.alarms.create(alarmName, {
 | 
			
		||||
//       delayInMinutes,
 | 
			
		||||
//       periodInMinutes: 24 * 60, // lặp lại mỗi 24h
 | 
			
		||||
//     });
 | 
			
		||||
 | 
			
		||||
//     console.log(`⏰ Daily reload alarm set for ${firstTrigger}`);
 | 
			
		||||
//   });
 | 
			
		||||
 | 
			
		||||
//   // Lắng nghe alarm
 | 
			
		||||
//   chrome.alarms.onAlarm.addListener((alarm) => {
 | 
			
		||||
//     if (alarm.name === "dailyReload") {
 | 
			
		||||
//       console.log("🔄 Reloading page (2 AM alarm)");
 | 
			
		||||
//       // Reload tất cả tab đang mở (hoặc tab cụ thể nếu muốn)
 | 
			
		||||
//       chrome.tabs.query({}, (tabs) => {
 | 
			
		||||
//         tabs.forEach((tab) => {
 | 
			
		||||
//           if (tab.id) chrome.tabs.reload(tab.id);
 | 
			
		||||
//         });
 | 
			
		||||
//       });
 | 
			
		||||
//     }
 | 
			
		||||
//   });
 | 
			
		||||
// }
 | 
			
		||||
 | 
			
		||||
function initReloadAlarmEvery4Hours() {
 | 
			
		||||
  const alarmName = "reloadEvery4Hours";
 | 
			
		||||
function initDailyReloadAlarm() {
 | 
			
		||||
  // Tên alarm
 | 
			
		||||
  const alarmName = "dailyReload";
 | 
			
		||||
 | 
			
		||||
  // Xóa alarm cũ nếu có
 | 
			
		||||
  chrome.alarms.clear(alarmName, () => {
 | 
			
		||||
    // Tạo alarm chạy sau 1 phút và lặp lại mỗi 4 tiếng
 | 
			
		||||
    // Lấy thời gian hiện tại
 | 
			
		||||
    const now = new Date();
 | 
			
		||||
 | 
			
		||||
    // Thiết lập 2 giờ sáng ngày hôm nay hoặc ngày mai nếu đã quá giờ
 | 
			
		||||
    const firstTrigger = new Date();
 | 
			
		||||
    firstTrigger.setHours(2, 0, 0, 0); // 2:00:00
 | 
			
		||||
 | 
			
		||||
    if (firstTrigger.getTime() <= now.getTime()) {
 | 
			
		||||
      // Nếu đã qua 2h sáng hôm nay, đặt vào ngày mai
 | 
			
		||||
      firstTrigger.setDate(firstTrigger.getDate() + 1);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const delayInMinutes = (firstTrigger.getTime() - now.getTime()) / 1000 / 60;
 | 
			
		||||
 | 
			
		||||
    // Tạo alarm
 | 
			
		||||
    chrome.alarms.create(alarmName, {
 | 
			
		||||
      delayInMinutes: 1, // chạy lần đầu sau 1 phút
 | 
			
		||||
      periodInMinutes: 4 * 60, // 4 giờ = 240 phút
 | 
			
		||||
      delayInMinutes,
 | 
			
		||||
      periodInMinutes: 24 * 60, // lặp lại mỗi 24h
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    console.log(`⏰ Reload alarm "${alarmName}" set to repeat every 4 hours`);
 | 
			
		||||
    console.log(`⏰ Daily reload alarm set for ${firstTrigger}`);
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  // Lắng nghe alarm
 | 
			
		||||
  chrome.alarms.onAlarm.addListener((alarm) => {
 | 
			
		||||
    if (alarm.name === "dailyReload") {
 | 
			
		||||
      console.log("🔄 Reloading page (2 AM alarm)");
 | 
			
		||||
      // Reload tất cả tab đang mở (hoặc tab cụ thể nếu muốn)
 | 
			
		||||
      chrome.tabs.query({}, (tabs) => {
 | 
			
		||||
        tabs.forEach((tab) => {
 | 
			
		||||
          if (tab.id) chrome.tabs.reload(tab.id);
 | 
			
		||||
        });
 | 
			
		||||
      });
 | 
			
		||||
    }
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Listener nên đặt bên ngoài để không bị mất khi service worker restart
 | 
			
		||||
chrome.alarms.onAlarm.addListener((alarm) => {
 | 
			
		||||
  if (alarm.name === "reloadEvery4Hours") {
 | 
			
		||||
    console.log(
 | 
			
		||||
      "🔄 Reloading all tabs (every 4 hours)",
 | 
			
		||||
      new Date().toLocaleString()
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    // Reload tất cả các tab đang mở
 | 
			
		||||
    chrome.tabs.query({}, (tabs) => {
 | 
			
		||||
      tabs.forEach((tab) => {
 | 
			
		||||
        if (tab.id) chrome.tabs.reload(tab.id);
 | 
			
		||||
      });
 | 
			
		||||
    });
 | 
			
		||||
  }
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
initSocket();
 | 
			
		||||
 | 
			
		||||
initReloadAlarmEvery4Hours();
 | 
			
		||||
initDailyReloadAlarm();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -45,10 +45,10 @@ contentService.startSyncConversations();
 | 
			
		|||
// AUTO SYNC MESAGE PREFIX (INTERNAL)
 | 
			
		||||
contentService.autoSyncConversationPrefixMessages();
 | 
			
		||||
 | 
			
		||||
// setTimeout(async () => {
 | 
			
		||||
// setTimeout(() => {
 | 
			
		||||
//   const a = new TeamsChatService();
 | 
			
		||||
 | 
			
		||||
//   const conversations = await a.handleGetConversations();
 | 
			
		||||
//   const message = a.extractAllMessages();
 | 
			
		||||
 | 
			
		||||
//   console.log({ conversations });
 | 
			
		||||
//   console.log({ message });
 | 
			
		||||
// }, 10000);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,7 +18,7 @@ export class LogsService {
 | 
			
		|||
  ) {}
 | 
			
		||||
 | 
			
		||||
  async saveLog(data: SendLogDto) {
 | 
			
		||||
    const oneHourAgo = new Date(Date.now() - 60 * 60 * 1000);
 | 
			
		||||
    const thirtyMinutesAgo = new Date(Date.now() - 30 * 60 * 1000);
 | 
			
		||||
 | 
			
		||||
    // 1. Check nếu đã có log trùng trong 30 phút
 | 
			
		||||
    const existingLog = await this.repo
 | 
			
		||||
| 
						 | 
				
			
			@ -26,7 +26,7 @@ export class LogsService {
 | 
			
		|||
      .where('log.message = :message', { message: data.message })
 | 
			
		||||
      .andWhere('log.type = :type', { type: data.type })
 | 
			
		||||
      .andWhere('log.created_at > :time', {
 | 
			
		||||
        time: oneHourAgo.toISOString(),
 | 
			
		||||
        time: thirtyMinutesAgo.toISOString(),
 | 
			
		||||
      }) // convert sang ISO
 | 
			
		||||
      .getOne();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue