* Renamed to com.mattermost.rnbeta * Fastlane for release of com.mattermost.rn * Do not Publish apps directly to production * Change ios icon format from jpeg to png
91 lines
2.7 KiB
Java
91 lines
2.7 KiB
Java
package com.mattermost.rnbeta;
|
|
|
|
import android.app.Activity;
|
|
import android.util.Log;
|
|
|
|
import com.facebook.react.bridge.ReactContext;
|
|
import com.reactnativenavigation.NavigationApplication;
|
|
import com.reactnativenavigation.controllers.ActivityCallbacks;
|
|
import com.reactnativenavigation.react.ReactGateway;
|
|
import com.wix.reactnativenotifications.core.AppLifecycleFacade;
|
|
|
|
import java.util.Set;
|
|
import java.util.concurrent.CopyOnWriteArraySet;
|
|
|
|
public class NotificationsLifecycleFacade extends ActivityCallbacks implements AppLifecycleFacade {
|
|
|
|
private static final String TAG = NotificationsLifecycleFacade.class.getSimpleName();
|
|
|
|
private Activity mVisibleActivity;
|
|
private Set<AppVisibilityListener> mListeners = new CopyOnWriteArraySet<>();
|
|
|
|
@Override
|
|
public void onActivityResumed(Activity activity) {
|
|
switchToVisible(activity);
|
|
}
|
|
|
|
@Override
|
|
public void onActivityPaused(Activity activity) {
|
|
switchToInvisible(activity);
|
|
}
|
|
|
|
@Override
|
|
public void onActivityStopped(Activity activity) {
|
|
switchToInvisible(activity);
|
|
}
|
|
|
|
@Override
|
|
public void onActivityDestroyed(Activity activity) {
|
|
switchToInvisible(activity);
|
|
}
|
|
|
|
@Override
|
|
public boolean isReactInitialized() {
|
|
return NavigationApplication.instance.isReactContextInitialized();
|
|
}
|
|
|
|
@Override
|
|
public ReactContext getRunningReactContext() {
|
|
final ReactGateway reactGateway = NavigationApplication.instance.getReactGateway();
|
|
if (reactGateway == null || !reactGateway.isInitialized()) {
|
|
return null;
|
|
}
|
|
|
|
return reactGateway.getReactContext();
|
|
}
|
|
|
|
@Override
|
|
public boolean isAppVisible() {
|
|
return mVisibleActivity != null;
|
|
}
|
|
|
|
@Override
|
|
public synchronized void addVisibilityListener(AppVisibilityListener listener) {
|
|
mListeners.add(listener);
|
|
}
|
|
|
|
@Override
|
|
public synchronized void removeVisibilityListener(AppVisibilityListener listener) {
|
|
mListeners.remove(listener);
|
|
}
|
|
|
|
private synchronized void switchToVisible(Activity activity) {
|
|
if (mVisibleActivity == null) {
|
|
mVisibleActivity = activity;
|
|
Log.v(TAG, "Activity is now visible ("+activity+")");
|
|
for (AppVisibilityListener listener : mListeners) {
|
|
listener.onAppVisible();
|
|
}
|
|
}
|
|
}
|
|
|
|
private synchronized void switchToInvisible(Activity activity) {
|
|
if (mVisibleActivity == activity) {
|
|
mVisibleActivity = null;
|
|
Log.v(TAG, "Activity is now NOT visible ("+activity+")");
|
|
for (AppVisibilityListener listener : mListeners) {
|
|
listener.onAppNotVisible();
|
|
}
|
|
}
|
|
}
|
|
}
|