
Research
Security News
Lazarus Strikes npm Again with New Wave of Malicious Packages
The Socket Research Team has discovered six new malicious npm packages linked to North Korea’s Lazarus Group, designed to steal credentials and deploy backdoors.
react-native-matrix-sdk
Advanced tools
This is a native react-native library for matrix.org.
Attention: This is still under development and not ready for being used, yet.
Any contribution is welcomed (especially if you have iOS/Swift/Obj-C skills).
The most recent versions are the *-alpha*
versions, don't use any other!
$ npm install react-native-matrix-sdk@1.0.0-alpha50 --save
$ react-native link react-native-matrix-sdk
These steps need to be done, regardless of whether you linked already (this is not handled by linking)!
In your android/build.gradle
you need to add the following repository:
allprojects {
repositories {
....
maven {
url "https://github.com/vector-im/jitsi_libre_maven/raw/master/releases"
}
....
Add or change in your android/app/src/main/AndroidManifest.xml
the allowBackup
property to true
:
...
<application
android:allowBackup="true"
...
As the matrix-android-sdk includes quite a lot classes you will very likely exceed the maximum allowed classes
limit. The error looks something like this D8: Cannot fit requested classes in a single dex file (# methods: 74762 > 65536)
.
Therefore, you need to enable "multidex-ing" for your android project. You can enable it by adding multiDexEnabled true
to your
android/app/build.gradle
:
android {
....
defaultConfig {
...
multiDexEnabled true
}
We are looking forward to make steps (1-2) obsolete in the future. There exists no shortcut/workaround for step 3.
Add the following to your pods file
pod 'react-native-matrix-sdk', :path => '../node_modules/react-native-matrix-sdk'
pod 'AFNetworking', :modular_headers => true
pod 'GZIP', :modular_headers => true
pod 'OLMKit', :modular_headers => true
pod 'Realm', :modular_headers => true
pod 'libbase58', :modular_headers => true
pod 'MatrixSDK/SwiftSupport', :git => 'https://github.com/hannojg/matrix-ios-sdk.git', :branch => 'develop'
Before you can run pod install
you need to setup a Swift/Objective-C bridging header, as this library uses
Swift code this is needed for RN to work.
Now you can install all the pods:
cd ios/ && pod install && cd ..
For up to date API capabilities check the types file: https://github.com/hannojg/react-native-matrix-sdk/blob/master/types/index.d.ts Various use cases: (Attention: the following section isn't updated)
import MatrixSdk from 'react-native-matrix-sdk';
MatrixSdk.configure('https://your-matrix-homeserver.org');
try {
// The credentials will be also saved to the MatrixSdk instance
// but they can be returned anyways.
const credentials = await MatrixSdk.login('test', 'test');
// Session will return MXSessionAttributes
const session = await MatrixSdk.startSession();
// Create room, invite person & send message
const roomCreation = await MatrixSDK.createRoom('@alice:your-matrix-homeserver.org');
const roomId = roomCreation.room_id;
const successMessage = await MatrixSDK.sendMessageToRoom(roomId, 'text', {
body: 'Hello Alice 🚀',
msgtype: 'm.text',
});
} catch (e) {
console.error(e);
}
You can listen to any matrix event here you can imagine. Things like typing, new room invitations users leaving rooms etc. After the example you will find a list of all supported events:
// Add listener for events
const matrixGlobalEventEmitter = new NativeEventEmitter(MatrixSDK);
// This will notify us about any member changes of all rooms of a user
// this includes things like new invitations
matrixGlobalEventEmitter.addListener('m.room.member', event => {
// do something with the event
});
// We also need to start to listen to the events
await MatrixSDK.listen();
// When we are done listening we should unlisten
MatrixSDK.unlisten();
For listening to events in a specific chat room, add a event listener to that room.
Don't forget to unlisten
when your component dismounts!
// Add listener for events
const matrixRoomTestEmitter = new NativeEventEmitter(MatrixSDK);
// Only listen to future events, thus using 'matrix.room.forwards'
// If you want to listen to past events use 'matrix.room.backwards'
matrixRoomTestEmitter.addListener('matrix.room.forwards', event => {
if (event.event_type === 'm.room.message') {
console.log(event.content.body);
}
});
await MatrixSDK.listenToRoom(roomId);
console.log('Subscription to room has been made, Captain!');
const events = await MatrixSDK.loadMessagesInRoom(roomId, 50, true);
// Load further 50 messages
const furtherEvents = await MatrixSDK.loadMessagesInRoom(roomId, 50, false);
The use of this library is governed by a Creative Commons license. You can use, modify, copy, and distribute this edition as long as it’s for non-commercial use, you provide attribution, and share under a similar license. https://github.com/hannojg/react-native-matrix-sdk/blob/master/LICENSE.md
You can't use this library in a commercial product.
1.0.0-alpha74
FAQs
React Native SDK for Matrix.org
We found that react-native-matrix-sdk demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
The Socket Research Team has discovered six new malicious npm packages linked to North Korea’s Lazarus Group, designed to steal credentials and deploy backdoors.
Security News
Socket CEO Feross Aboukhadijeh discusses the open web, open source security, and how Socket tackles software supply chain attacks on The Pair Program podcast.
Security News
Opengrep continues building momentum with the alpha release of its Playground tool, demonstrating the project's rapid evolution just two months after its initial launch.