bokuweb/tsukiakari

View on GitHub
src/browser/src/filter-stream.js

Summary

Maintainability
A
2 hrs
Test Coverage
import { ipcMain, powerMonitor } from 'electron';
import T from 'twit';

export const watchFilterStreamRequest = () => {
  // const q = [];
  let stream;

  ipcMain.on('request-filterstream-connection', (event, account, params) => {
    if (stream) {
      console.log('Stop filter stream.');
      stream.stop();
      stream = null;
    }
    console.log('start subscribe filter stream');
    const t = new T({
      consumer_key: global.consumerKey,
      consumer_secret: global.consumerSecret,
      access_token: account.accessToken,
      access_token_secret: account.accessTokenSecret,
      timeout_ms: 60 * 1000,
    });
    const queryString = params.q.join(',');
    if (queryString === '') {
      return console.log('query string is empty, can not connect filter stream');
    }
    console.log(queryString);
    try {
      stream = t.stream('statuses/filter', { track: queryString });
      stream.on('tweet', tweet => {
        event.sender.send('filterstream-tweet', tweet, params.q);
      });
      stream.on('error', error => {
        console.error(error);
      });
    } catch (e) {
      console.log('catch error, on filter stream');
      console.log(e);
    }

  });

  powerMonitor.on('suspend', () => {
    console.log('suspend!!!');
    if (stream) stream.stop();
  });

  powerMonitor.on('resume', () => {
    console.log('resume');
    if (stream) stream.start();
  });
};