open_tabs.js 1019 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. const fileHash = require('../../util/backup_filehash')
  2. const apple_timestamp = require('../../util/apple_timestamp')
  3. const TABS_DB = fileHash('Library/Safari/BrowserState.db', 'AppDomain-com.apple.mobilesafari')
  4. module.exports = {
  5. version: 4,
  6. name: 'safari.open_tabs',
  7. description: `List open Safari tabs when backup was made`,
  8. requiresBackup: true,
  9. // Run on a v3 lib / backup object
  10. run (lib, { backup }) {
  11. return openTabsReport(backup)
  12. },
  13. // Available fields.
  14. output: {
  15. title: el => el.title,
  16. url: el => el.url,
  17. lastViewedTime: el => el.last_viewed
  18. }
  19. }
  20. const openTabsReport = (backup) => {
  21. return new Promise((resolve, reject) => {
  22. backup.openDatabase(TABS_DB)
  23. .then(db => {
  24. db.all(`
  25. select *, ${apple_timestamp.parse('last_viewed_time')} as last_viewed from tabs
  26. order by last_viewed_time DESC
  27. `, function (err, rows) {
  28. if (err) reject(err)
  29. resolve(rows)
  30. })
  31. })
  32. .catch(reject)
  33. })
  34. }