Explorar el Código

Use streaming API for standalone timelines on /about and /tag pages (#5998)

master
Eugen Rochko hace 6 años
committed by GitHub
padre
commit
0128b86d30
No se encontró ninguna clave conocida en la base de datos para esta firma ID de clave GPG: 4AEE18F83AFDEB23
Se han modificado 3 ficheros con 17 adiciones y 15 borrados
  1. +5
    -7
      app/javascript/mastodon/features/standalone/hashtag_timeline/index.js
  2. +5
    -7
      app/javascript/mastodon/features/standalone/public_timeline/index.js
  3. +7
    -1
      app/javascript/mastodon/stream.js

+ 5
- 7
app/javascript/mastodon/features/standalone/hashtag_timeline/index.js Ver fichero

@@ -8,6 +8,7 @@ import {
} from '../../../actions/timelines';
import Column from '../../../components/column';
import ColumnHeader from '../../../components/column_header';
import { connectHashtagStream } from '../../../actions/streaming';

@connect()
export default class HashtagTimeline extends React.PureComponent {
@@ -29,16 +30,13 @@ export default class HashtagTimeline extends React.PureComponent {
const { dispatch, hashtag } = this.props;

dispatch(refreshHashtagTimeline(hashtag));

this.polling = setInterval(() => {
dispatch(refreshHashtagTimeline(hashtag));
}, 10000);
this.disconnect = dispatch(connectHashtagStream(hashtag));
}

componentWillUnmount () {
if (typeof this.polling !== 'undefined') {
clearInterval(this.polling);
this.polling = null;
if (this.disconnect) {
this.disconnect();
this.disconnect = null;
}
}



+ 5
- 7
app/javascript/mastodon/features/standalone/public_timeline/index.js Ver fichero

@@ -9,6 +9,7 @@ import {
import Column from '../../../components/column';
import ColumnHeader from '../../../components/column_header';
import { defineMessages, injectIntl } from 'react-intl';
import { connectPublicStream } from '../../../actions/streaming';

const messages = defineMessages({
title: { id: 'standalone.public_title', defaultMessage: 'A look inside...' },
@@ -35,16 +36,13 @@ export default class PublicTimeline extends React.PureComponent {
const { dispatch } = this.props;

dispatch(refreshPublicTimeline());

this.polling = setInterval(() => {
dispatch(refreshPublicTimeline());
}, 3000);
this.disconnect = dispatch(connectPublicStream());
}

componentWillUnmount () {
if (typeof this.polling !== 'undefined') {
clearInterval(this.polling);
this.polling = null;
if (this.disconnect) {
this.disconnect();
this.disconnect = null;
}
}



+ 7
- 1
app/javascript/mastodon/stream.js Ver fichero

@@ -62,7 +62,13 @@ export function connectStream(path, pollingRefresh = null, callbacks = () => ({


export default function getStream(streamingAPIBaseURL, accessToken, stream, { connected, received, disconnected, reconnected }) {
const ws = new WebSocketClient(`${streamingAPIBaseURL}/api/v1/streaming/?access_token=${accessToken}&stream=${stream}`);
const params = [ `stream=${stream}` ];

if (accessToken !== null) {
params.push(`access_token=${accessToken}`);
}

const ws = new WebSocketClient(`${streamingAPIBaseURL}/api/v1/streaming/?${params.join('&')}`);

ws.onopen = connected;
ws.onmessage = e => received(JSON.parse(e.data));


Cargando…
Cancelar
Guardar