Bläddra i källkod

[이벤트][New] 공유 취소 시 에러 처리

hyodong.min 6 år sedan
förälder
incheckning
e1c7b654cd

+ 22 - 24
app/src/main/java/kr/co/zumo/app/lifeplus/tool/Share.java

@@ -4,12 +4,9 @@
 package kr.co.zumo.app.lifeplus.tool;
 
 import android.net.Uri;
-import android.support.annotation.NonNull;
 import android.support.annotation.StringDef;
 import android.util.Log;
 
-import com.google.android.gms.tasks.OnCompleteListener;
-import com.google.android.gms.tasks.OnFailureListener;
 import com.google.android.gms.tasks.Task;
 import com.google.firebase.dynamiclinks.DynamicLink;
 import com.google.firebase.dynamiclinks.FirebaseDynamicLinks;
@@ -45,6 +42,8 @@ public abstract class Share<T> {
   public @interface Type {}
 
   T context;
+  Task<ShortDynamicLink> shortLinkTask;
+
 
   public Share(T context) {
     this.context = context;
@@ -60,7 +59,6 @@ public abstract class Share<T> {
 
   public void dispose() {
     context = null;
-
     disposeInternal();
   }
 
@@ -105,33 +103,33 @@ public abstract class Share<T> {
 
     Log.e("APP#  ShareFacebook | onDynamicLinkClick", "|" + " longLink: " + dynamicLink.getUri().toString());
 
-    Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
+    shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
       .setLongLink(dynamicLink.getUri())
       .buildShortDynamicLink()
-      .addOnCompleteListener(new OnCompleteListener<ShortDynamicLink>() {
-        @Override
-        public void onComplete(@NonNull Task<ShortDynamicLink> task) {
-          if (task.isSuccessful()) {
-            Uri shortLink = task.getResult().getShortLink();
-            Log.e("APP#  ShareFacebook | onComplete", "| shortLink: " + shortLink.toString());
-            listener.onSuccess(shortLink.toString());
-          }
-          else {
-            Log.e("APP#  ShareFacebook | onComplete", "|" + task.toString());
-
-            // short 실패, 롱으로 전달.
-            listener.onSuccess(dynamicLink.getUri().toString());
-          }
+      .addOnCompleteListener(task -> {
+        if (null == context) {
+          return;
         }
-      })
-      .addOnFailureListener(new OnFailureListener() {
-        @Override
-        public void onFailure(@NonNull Exception e) {
-          e.printStackTrace();
+        if (task.isSuccessful()) {
+          Uri shortLink = task.getResult().getShortLink();
+          Log.e("APP#  ShareFacebook | onComplete", "| shortLink: " + shortLink.toString());
+          listener.onSuccess(shortLink.toString());
+        }
+        else {
+          Log.e("APP#  ShareFacebook | onComplete", "|" + task.toString());
 
           // short 실패, 롱으로 전달.
           listener.onSuccess(dynamicLink.getUri().toString());
         }
+      })
+      .addOnFailureListener(e -> {
+        if (null == context) {
+          return;
+        }
+        e.printStackTrace();
+
+        // short 실패, 롱으로 전달.
+        listener.onSuccess(dynamicLink.getUri().toString());
       });
   }
 

+ 6 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/tool/ShareClipBoard.java

@@ -30,11 +30,17 @@ public class ShareClipBoard extends Share<Context> {
     onDynamicLinkClick(eventDetailBean, getDeepLink(eventDetailBean, ShareKakaoTalk.LINK_TYPE_EVENT_DETAIL), new IShareListener() {
       @Override
       public void onSuccess(String result) {
+        if (null == context) {
+          return;
+        }
         copy("url", result, listener);
       }
 
       @Override
       public void onFailure(int errorCode, String result) {
+        if (null == context) {
+          return;
+        }
         listener.onFailure(errorCode, result);
       }
     });

+ 6 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/tool/ShareEmail.java

@@ -28,11 +28,17 @@ public class ShareEmail extends Share<Context> {
     onDynamicLinkClick(eventDetailBean, getDeepLink(eventDetailBean, ShareKakaoTalk.LINK_TYPE_EVENT_DETAIL), new IShareListener() {
       @Override
       public void onSuccess(String result) {
+        if (null == context) {
+          return;
+        }
         listener.onSuccess(result);
       }
 
       @Override
       public void onFailure(int errorCode, String result) {
+        if (null == context) {
+          return;
+        }
         listener.onFailure(errorCode, result);
       }
     });

+ 36 - 3
app/src/main/java/kr/co/zumo/app/lifeplus/tool/ShareFacebook.java

@@ -30,6 +30,7 @@ import kr.co.zumo.app.lifeplus.bean.api.EventDetailBean;
 public class ShareFacebook extends Share<Activity> {
 
   private CallbackManager callbackManager;
+  private ShareDialog shareDialog;
 
   public ShareFacebook(Activity context, CallbackManager callbackManager) {
     super(context);
@@ -51,20 +52,29 @@ public class ShareFacebook extends Share<Activity> {
           .setContentUrl(uri)
           .build();
 
-        ShareDialog shareDialog = new ShareDialog(context);
+        shareDialog = new ShareDialog(context);
         shareDialog.registerCallback(ShareFacebook.this.callbackManager, new FacebookCallback<Sharer.Result>() {
           @Override
           public void onSuccess(Sharer.Result result) {
+            if (null == context) {
+              return;
+            }
             listener.onSuccess(result.toString());
           }
 
           @Override
           public void onCancel() {
+            if (null == context) {
+              return;
+            }
             listener.onCancel();
           }
 
           @Override
           public void onError(FacebookException error) {
+            if (null == context) {
+              return;
+            }
             error.printStackTrace();
             listener.onFailure(0, error.getLocalizedMessage());
           }
@@ -74,6 +84,9 @@ public class ShareFacebook extends Share<Activity> {
 
       @Override
       public void onFailure(int errorCode, String result) {
+        if (null == context) {
+          return;
+        }
         listener.onFailure(errorCode, result);
       }
     });
@@ -95,20 +108,29 @@ public class ShareFacebook extends Share<Activity> {
       .setContentUrl(builder.build())
       .build();
 
-    ShareDialog shareDialog = new ShareDialog(context);
+    shareDialog = new ShareDialog(context);
     shareDialog.registerCallback(this.callbackManager, new FacebookCallback<Sharer.Result>() {
       @Override
       public void onSuccess(Sharer.Result result) {
+        if (null == context) {
+          return;
+        }
         listener.onSuccess(result.toString());
       }
 
       @Override
       public void onCancel() {
+        if (null == context) {
+          return;
+        }
         listener.onCancel();
       }
 
       @Override
       public void onError(FacebookException error) {
+        if (null == context) {
+          return;
+        }
         error.printStackTrace();
         listener.onFailure(0, error.getLocalizedMessage());
       }
@@ -162,20 +184,29 @@ public class ShareFacebook extends Share<Activity> {
       .setContentUrl(uri)
       .build();
 
-    ShareDialog shareDialog = new ShareDialog(context);
+    shareDialog = new ShareDialog(context);
     shareDialog.registerCallback(this.callbackManager, new FacebookCallback<Sharer.Result>() {
       @Override
       public void onSuccess(Sharer.Result result) {
+        if (null == context) {
+          return;
+        }
         listener.onSuccess(result.toString());
       }
 
       @Override
       public void onCancel() {
+        if (null == context) {
+          return;
+        }
         listener.onCancel();
       }
 
       @Override
       public void onError(FacebookException error) {
+        if (null == context) {
+          return;
+        }
         error.printStackTrace();
         listener.onFailure(0, error.getLocalizedMessage());
       }
@@ -185,5 +216,7 @@ public class ShareFacebook extends Share<Activity> {
 
   @Override
   public void disposeInternal() {
+    callbackManager = null;
+    shareDialog = null;
   }
 }

+ 24 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/tool/ShareKakaoTalk.java

@@ -68,12 +68,18 @@ public class ShareKakaoTalk extends Share<Context> {
     KakaoLinkService.getInstance().sendDefault(context, params, new ResponseCallback<KakaoLinkResponse>() {
       @Override
       public void onFailure(ErrorResult errorResult) {
+        if (null == context) {
+          return;
+        }
         Log.e("APP#  ShareKakaoTalk | onFailure", "|" + errorResult.toString());
         listener.onFailure(errorResult.getErrorCode(), errorResult.getErrorMessage());
       }
 
       @Override
       public void onSuccess(KakaoLinkResponse result) {
+        if (null == context) {
+          return;
+        }
         Log.i("APP# ShareKakaoTalk | onSuccess", "|" + result.toString());
         // 템플릿 밸리데이션과 쿼터 체크가 성공적으로 끝남. 톡에서 정상적으로 보내졌는지 보장은 할 수 없다. 전송 성공 유무는 서버콜백 기능을 이용하여야 한다.
         listener.onSuccess(result.toString());
@@ -125,12 +131,18 @@ public class ShareKakaoTalk extends Share<Context> {
     KakaoLinkService.getInstance().sendDefault(context, params, new ResponseCallback<KakaoLinkResponse>() {
       @Override
       public void onFailure(ErrorResult errorResult) {
+        if (null == context) {
+          return;
+        }
         Log.e("APP#  ShareKakaoTalk | onFailure", "|" + errorResult.toString());
         listener.onFailure(errorResult.getErrorCode(), errorResult.getErrorMessage());
       }
 
       @Override
       public void onSuccess(KakaoLinkResponse result) {
+        if (null == context) {
+          return;
+        }
         Log.i("APP# ShareKakaoTalk | onSuccess", "|" + result.toString());
         // 템플릿 밸리데이션과 쿼터 체크가 성공적으로 끝남. 톡에서 정상적으로 보내졌는지 보장은 할 수 없다. 전송 성공 유무는 서버콜백 기능을 이용하여야 한다.
         listener.onSuccess(result.toString());
@@ -161,12 +173,18 @@ public class ShareKakaoTalk extends Share<Context> {
     KakaoLinkService.getInstance().sendDefault(context, params, new ResponseCallback<KakaoLinkResponse>() {
       @Override
       public void onFailure(ErrorResult errorResult) {
+        if (null == context) {
+          return;
+        }
         Log.e("APP#  ShareKakaoTalk | onFailure", "|" + errorResult.toString());
         listener.onFailure(errorResult.getErrorCode(), errorResult.getErrorMessage());
       }
 
       @Override
       public void onSuccess(KakaoLinkResponse result) {
+        if (null == context) {
+          return;
+        }
         Log.i("APP# ShareKakaoTalk | onSuccess", "|" + result.toString());
         // 템플릿 밸리데이션과 쿼터 체크가 성공적으로 끝남. 톡에서 정상적으로 보내졌는지 보장은 할 수 없다. 전송 성공 유무는 서버콜백 기능을 이용하여야 한다.
         listener.onSuccess(result.toString());
@@ -196,12 +214,18 @@ public class ShareKakaoTalk extends Share<Context> {
     KakaoLinkService.getInstance().sendDefault(context, params, new ResponseCallback<KakaoLinkResponse>() {
       @Override
       public void onFailure(ErrorResult errorResult) {
+        if (null == context) {
+          return;
+        }
         Log.e("APP#  ShareKakaoTalk | onFailure", "|" + errorResult.toString());
         listener.onFailure(errorResult.getErrorCode(), errorResult.getErrorMessage());
       }
 
       @Override
       public void onSuccess(KakaoLinkResponse result) {
+        if (null == context) {
+          return;
+        }
         Log.i("APP# ShareKakaoTalk | onSuccess", "|" + result.toString());
         // 템플릿 밸리데이션과 쿼터 체크가 성공적으로 끝남. 톡에서 정상적으로 보내졌는지 보장은 할 수 없다. 전송 성공 유무는 서버콜백 기능을 이용하여야 한다.
         listener.onSuccess(result.toString());

+ 9 - 2
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/event/EventDetailPresenter.java

@@ -49,10 +49,16 @@ public abstract class EventDetailPresenter<M extends EventDetailModel, V extends
   }
 
   @Override
-  protected void destroyInternal() {
-
+  protected final void destroyInternal() {
+    if (null != share) {
+      share.dispose();
+      share = null;
+    }
+    destroyInternal2();
   }
 
+  protected abstract void destroyInternal2();
+
   @Override
   protected void destroyViewInternal() {
 
@@ -88,6 +94,7 @@ public abstract class EventDetailPresenter<M extends EventDetailModel, V extends
   protected void pauseInternal() {
 
   }
+
   @Override
   public void onScreenReady() {
   }

+ 1 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/event/entry/EventDetailEntryPresenter.java

@@ -54,7 +54,7 @@ public class EventDetailEntryPresenter extends EventDetailPresenter<EventDetailE
   }
 
   @Override
-  protected void destroyInternal() {
+  protected void destroyInternal2() {
 
   }
 

+ 1 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/event/record/EventRecordPresenter.java

@@ -64,7 +64,7 @@ public class EventRecordPresenter extends EventDetailPresenter<EventRecordModel,
   }
 
   @Override
-  protected void destroyInternal() {
+  protected void destroyInternal2() {
 
   }
 

+ 1 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/event/select/EventDetailSelectPresenter.java

@@ -62,7 +62,7 @@ public class EventDetailSelectPresenter extends EventDetailPresenter<EventDetail
   }
 
   @Override
-  protected void destroyInternal() {
+  protected void destroyInternal2() {
 
   }