Skip to content

feat: export event types - #2

Merged
grabbou merged 1 commit into
mainfrom
feat/export-event-types
Oct 31, 2024
Merged

feat: export event types#2
grabbou merged 1 commit into
mainfrom
feat/export-event-types

Conversation

@thiagobrez

Copy link
Copy Markdown
Collaborator

Currently when adding an event listener, inline functions work fine:

const ws = new WebSocket(...);

ws.addEventListener('message', (event) => {
  console.log(event.message); // Infers `event.message` ✅
});

But when extracting the function outside (in case we want to remove the listener later, for example), type cannot be inferred. Hence, this PR adds 4 new event types and exports them, to facilitate for the user to type his listeners:

  • OpenEvent
  • MessageEvent
  • ErrorEvent
  • CloseEvent

To be used like:

import {
  WebSocket,
  OpenEvent,
  MessageEvent,
  ErrorEvent,
  CloseEvent
 } from 'react-native-fast-ws'

const ws = new WebSocket(...);

function App() {
  useEffect(() => {
    const onOpen = (event: OpenEvent) => {
      console.log('ws connection is open!');
    };

    const onMessage = (event: MessageEvent) => {
      console.log('Message received: ', event.message);
    };

    const onError = (event: ErrorEvent) => {
      console.log('Error: ', event.message);
    };

    const onClose = (event: CloseEvent) => {
      console.log('Code: ', event.code);
      console.log('Reason: ', event.reason);
    };

    ws.addEventListener('open', onOpen);
    ws.addEventListener('message', onMessage);
    ws.addEventListener('error', onError);
    ws.addEventListener('close', onClose);

    return () => {
      ws.removeEventListener('open', onOpen);
      ws.removeEventListener('message', onMessage);
      ws.removeEventListener('error', onError);
      ws.removeEventListener('close', onClose);
    };
  }, []);
}

@dratwas
dratwas requested a review from grabbou October 31, 2024 08:37

@grabbou grabbou left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you!

@grabbou
grabbou merged commit 13e9d1a into main Oct 31, 2024
@thiagobrez
thiagobrez deleted the feat/export-event-types branch October 31, 2024 19:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants