@amityco/ts-sdk-react-native
Version:
Amity Social Cloud Typescript SDK
48 lines (41 loc) • 932 B
text/typescript
type NetworkActivitiesCallback = (
request: Request,
response: {
data: unknown;
status: number;
statusText: string;
headers: Headers;
},
) => void;
class NetworkActivitiesWatcher {
private _listener = new Map<NetworkActivitiesCallback, NetworkActivitiesCallback>();
onNetworkActivities(callback: NetworkActivitiesCallback) {
this._listener.set(callback, callback);
return () => {
this._listener.delete(callback);
};
}
setNetworkActivities(
request: Request,
response: {
data: unknown;
status: number;
statusText: string;
headers: Headers;
},
) {
this._listener.forEach(cb => cb(request, response));
}
destroy() {
this._listener.clear();
}
}
let instance: NetworkActivitiesWatcher;
export default {
getInstance: () => {
if (!instance) {
instance = new NetworkActivitiesWatcher();
}
return instance;
},
};