Ver código fonte

Task #1270 [Android] 명언 랜덤하게 노출

http://13.124.195.61/redmine/issues/1270

rv 2018071201
sanghoonkwon 7 anos atrás
pai
commit
8761a24741

+ 5 - 0
app/src/main/java/kr/co/hanwha/hifive/adapter/viewholder/MainEmptyFamousSayingListViewHolder.java

@@ -7,6 +7,8 @@ import android.widget.TextView;
 
 import kr.co.hanwha.hifive.R;
 import kr.co.hanwha.hifive.base.BaseViewHolder;
+import kr.co.hanwha.hifive.data.model.MaximData;
+import kr.co.hanwha.hifive.data.source.MaximDataRepository;
 
 /**
  * Created by sanghoonkwon on 2018. 2. 12..
@@ -33,6 +35,9 @@ public class MainEmptyFamousSayingListViewHolder extends BaseViewHolder {
 //        String message = (String) object;
 //        mTextViewEmpty.setText(message);
 
+        MaximData data = MaximDataRepository.getInstance().getRandomMaximData(getContext());
+        mTextViewTitle.setText(data.getContent());
+        mTextViewSubTitle.setText(data.getSource());
 
         if (height > 0) {
             LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, height);

+ 38 - 0
app/src/main/java/kr/co/hanwha/hifive/data/model/MaximData.java

@@ -0,0 +1,38 @@
+package kr.co.hanwha.hifive.data.model;
+
+public class MaximData {
+    int id;
+    String content;
+    String source;
+    String background_url;
+    String created_at;
+    String updated_at;
+
+    public MaximData() {
+
+    }
+
+    public MaximData(String content, String source) {
+        this.content = content;
+        this.source = source;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public String getSource() {
+        return source;
+    }
+
+}
+/* 2018.7.12
+{
+"id": 8,
+"content": "할 수 있다고 생각하기 때문에 가능한 것이다",
+"source": "짱구 中",
+"background_url": null,
+"created_at": "2018-07-10 09:04:19.0",
+"updated_at": "2018-07-10 09:04:19.0"
+},
+ */

+ 11 - 0
app/src/main/java/kr/co/hanwha/hifive/data/model/MaximRoot.java

@@ -0,0 +1,11 @@
+package kr.co.hanwha.hifive.data.model;
+
+import java.util.ArrayList;
+
+public class MaximRoot extends BaseData {
+    ArrayList<MaximData> listRandomMaxims;
+
+    public ArrayList<MaximData> getListRandomMaxims() {
+        return listRandomMaxims;
+    }
+}

+ 81 - 0
app/src/main/java/kr/co/hanwha/hifive/data/source/MaximDataRepository.java

@@ -0,0 +1,81 @@
+package kr.co.hanwha.hifive.data.source;
+
+import android.content.Context;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+
+import java.util.ArrayList;
+import java.util.Random;
+
+import kr.co.hanwha.hifive.R;
+import kr.co.hanwha.hifive.data.model.MaximData;
+import kr.co.hanwha.hifive.data.model.MaximRoot;
+import kr.co.hanwha.hifive.data.source.contract.MaximDataSource;
+import kr.co.hanwha.hifive.network.HFNetworkUtil;
+import kr.co.hanwha.hifive.network.hanwha.HanwhaNetworkCallback;
+import kr.co.hanwha.hifive.network.hanwha.HanwhaNetworkError;
+
+public class MaximDataRepository implements MaximDataSource {
+    private static MaximDataRepository sInstance = null;
+    private static ArrayList<MaximData> sListMaximData;
+
+    public static MaximDataRepository getInstance() {
+        if (sInstance == null) {
+            sInstance = new MaximDataRepository();
+        }
+        return sInstance;
+    }
+
+    public static void destroyInstance() {
+        sInstance = null;
+    }
+
+    @Override
+    public void clearData() {
+        if (sListMaximData != null) sListMaximData.clear();
+        sListMaximData = null;
+    }
+
+    @Override
+    public void requestMaximList(@NonNull Context context, @Nullable final HanwhaNetworkCallback callback) {
+        String encryption_member_id = MemberDataRepository.getInstance().getEncryptionMemberId();
+        HFNetworkUtil networkUtil = new HFNetworkUtil();
+        networkUtil.requestMaximList(context, encryption_member_id, new HanwhaNetworkCallback<MaximRoot>() {
+            @Override
+            public void onSuccess(MaximRoot response) {
+                if (response != null) {
+                    sListMaximData = response.getListRandomMaxims();
+                }
+                callback.onSuccess(sListMaximData);
+            }
+
+            @Override
+            public void onFailure(HanwhaNetworkError error) {
+                callback.onFailure(error);
+            }
+
+            @Override
+            public void onPreExecute() {
+                callback.onPreExecute();
+            }
+
+            @Override
+            public void onPostExecute() {
+                callback.onPostExecute();
+            }
+        });
+    }
+
+    @Override
+    public MaximData getRandomMaximData(@NonNull Context context) {
+        if (sListMaximData != null && sListMaximData.size() > 0) {
+            Random random = new Random();
+            int index = random.nextInt(sListMaximData.size());
+            return sListMaximData.get(index);
+        }
+
+
+        return new MaximData(context.getString(R.string.maxim_contents), context.getString(R.string.maxim_source));
+    }
+
+}

+ 25 - 0
app/src/main/java/kr/co/hanwha/hifive/data/source/contract/MaximDataSource.java

@@ -0,0 +1,25 @@
+package kr.co.hanwha.hifive.data.source.contract;
+
+import android.content.Context;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+
+import kr.co.hanwha.hifive.base.BaseDataSource;
+import kr.co.hanwha.hifive.data.model.MaximData;
+import kr.co.hanwha.hifive.network.hanwha.HanwhaNetworkCallback;
+
+public interface MaximDataSource extends BaseDataSource {
+    /**
+     * 명언 목록 조회
+     *
+     * @param context Context
+     */
+    void requestMaximList(@NonNull Context context, @Nullable HanwhaNetworkCallback callback);
+
+    /**
+     * 명언 정보 조회
+     *
+     * @return MaximData
+     */
+    MaximData getRandomMaximData(@NonNull Context context);
+}

+ 11 - 1
app/src/main/java/kr/co/hanwha/hifive/network/HFNetworkContract.java

@@ -133,7 +133,7 @@ public interface HFNetworkContract {
      * @param project_id           PROJECT ID
      * @param callback             콜백
      */
-    void requestProjectsGetView(@NonNull Context context, @NonNull String encryption_member_id, int project_id, boolean isAll,@Nullable HanwhaNetworkCallback callback);
+    void requestProjectsGetView(@NonNull Context context, @NonNull String encryption_member_id, int project_id, boolean isAll, @Nullable HanwhaNetworkCallback callback);
 
     /**
      * PROJECT - 내가 속해있는 프로젝트 목록
@@ -738,4 +738,14 @@ public interface HFNetworkContract {
                               @NonNull String encryption_member_id,
                               @Nullable HanwhaNetworkCallback callback);
 
+    /**
+     * 명언 목록 조회
+     *
+     * @param context              Context
+     * @param encryption_member_id 암호화된 멤버 ID
+     * @param callback             CALLBACK
+     */
+    void requestMaximList(@NonNull Context context,
+                          @NonNull String encryption_member_id,
+                          @Nullable HanwhaNetworkCallback callback);
 }

+ 35 - 6
app/src/main/java/kr/co/hanwha/hifive/network/HFNetworkUtil.java

@@ -21,6 +21,7 @@ import kr.co.hanwha.hifive.data.model.LoginData;
 import kr.co.hanwha.hifive.data.model.MainHomeAssignedRoot;
 import kr.co.hanwha.hifive.data.model.MainHomeRequestRoot;
 import kr.co.hanwha.hifive.data.model.MainProjectRoot;
+import kr.co.hanwha.hifive.data.model.MaximRoot;
 import kr.co.hanwha.hifive.data.model.MemberInfoRoot;
 import kr.co.hanwha.hifive.data.model.MessageAddData;
 import kr.co.hanwha.hifive.data.model.MessageListRoot;
@@ -55,6 +56,7 @@ public class HFNetworkUtil extends HanwhaNetworkUtil implements HFNetworkContrac
     private final int RESULT_SUCCESS = 0;
     protected final int COMMENT_PAGE_SIZE = 100;
     protected final int ALARM_PAGE_SIZE = 20;
+    protected final int MAXIM_SIZE = 100;
 
     private final String PARAM_LOGIN_ID = "login_id";
     private final String PARAM_MEMBER_ID = "member_id";
@@ -87,6 +89,7 @@ public class HFNetworkUtil extends HanwhaNetworkUtil implements HFNetworkContrac
     private final String PARAM_GROUP_ID = "group_id";
     private final String PARAM_VALUE = "value";
     private final String PARAM_CMD = "cmd";
+    private final String PARAM_LIMIT_COUNT = "limit_count";
 
     private final String VALUE_CMD_R = "R";
     private final String VALUE_CMD_U = "U";
@@ -255,6 +258,10 @@ public class HFNetworkUtil extends HanwhaNetworkUtil implements HFNetworkContrac
      **************************************************/
     protected final String TASKS_UPDATE_STATUS_CS = BASE_URL + "/tasks/update/status/cs";
 
+    /**************************************************
+     * 명언 목록 조회
+     **************************************************/
+    protected final String APP_GET_MAXIMS = BASE_URL + "/app/get/maxims";
 
     @Override
     public String getWebUrlSettingEditProfile() {
@@ -295,7 +302,10 @@ public class HFNetworkUtil extends HanwhaNetworkUtil implements HFNetworkContrac
     }
 
     @Override
-    public void requestMemberDeviceAdd(@NonNull Context context, @NonNull String encryption_member_id, @NonNull String token, @NonNull String device_uid, @Nullable HanwhaNetworkCallback callback) {
+    public void requestMemberDeviceAdd(@NonNull Context context, @NonNull String encryption_member_id,
+                                       @NonNull String token,
+                                       @NonNull String device_uid,
+                                       @Nullable HanwhaNetworkCallback callback) {
         HanwhaNetworkClient.REST rest = HanwhaNetworkClient.REST.POST;
         String url = MEMBERS_ADD_DEVICE;
         HashMap<String, Object> map = new HashMap<>();
@@ -309,7 +319,9 @@ public class HFNetworkUtil extends HanwhaNetworkUtil implements HFNetworkContrac
     }
 
     @Override
-    public void requestCheckUpdate(@NonNull Context context, @Nullable String login_id, @Nullable HanwhaNetworkCallback callback) {
+    public void requestCheckUpdate(@NonNull Context context,
+                                   @Nullable String login_id,
+                                   @Nullable HanwhaNetworkCallback callback) {
         HanwhaNetworkClient.REST rest = HanwhaNetworkClient.REST.POST;
         String url = APP_UPDATE;
         HashMap<String, Object> map = new HashMap<>();
@@ -321,7 +333,9 @@ public class HFNetworkUtil extends HanwhaNetworkUtil implements HFNetworkContrac
     }
 
     @Override
-    public void requestMemberAll(@NonNull Context context, @NonNull String encryption_member_id, @Nullable HanwhaNetworkCallback callback) {
+    public void requestMemberAll(@NonNull Context context,
+                                 @NonNull String encryption_member_id,
+                                 @Nullable HanwhaNetworkCallback callback) {
         HanwhaNetworkClient.REST rest = HanwhaNetworkClient.REST.POST;
         String url = MEMBERS_GET_ALL_DROPDOWN;
         HashMap<String, Object> map = new HashMap<>();
@@ -746,9 +760,6 @@ public class HFNetworkUtil extends HanwhaNetworkUtil implements HFNetworkContrac
         client.request(context, rest, url, getDefaultHeader(context), map, CrudDataRoot.class, mCommonHanwhaNetworkCallback);
     }
 
-    /**************************************************
-     * OLD
-     **************************************************/
     @Override
     public void requestGetMessageList(@NonNull Context context,
                                       @NonNull String encryption_member_id,
@@ -873,6 +884,24 @@ public class HFNetworkUtil extends HanwhaNetworkUtil implements HFNetworkContrac
         client.request(context, rest, url, getDefaultHeader(context), map, DabDataRoot.class, mCommonHanwhaNetworkCallback);
     }
 
+    @Override
+    public void requestMaximList(@NonNull Context context,
+                                 @NonNull String encryption_member_id,
+                                 @Nullable HanwhaNetworkCallback callback) {
+        HanwhaNetworkClient.REST rest = HanwhaNetworkClient.REST.POST;
+
+        String url = APP_GET_MAXIMS;
+
+        HashMap<String, Object> map = new HashMap<>();
+        map.put(PARAM_LIMIT_COUNT, MAXIM_SIZE);
+        map.put(PARAM_ENCRYPTION_MEMBER_ID, encryption_member_id);
+
+        mHanwhaNetworkCallback = callback;
+
+        HanwhaNetworkClient client = new HanwhaNetworkClient();
+        client.request(context, rest, url, getDefaultHeader(context), map, MaximRoot.class, mCommonHanwhaNetworkCallback);
+    }
+
     /**************************************************
      * HanwhaNetworkCallback
      **************************************************/

+ 93 - 55
app/src/main/java/kr/co/hanwha/hifive/screen/intro/IntroPresenter.java

@@ -11,9 +11,12 @@ import java.util.ArrayList;
 import kr.co.hanwha.hifive.BuildConfig;
 import kr.co.hanwha.hifive.R;
 import kr.co.hanwha.hifive.data.model.LoginData;
+import kr.co.hanwha.hifive.data.model.MaximData;
 import kr.co.hanwha.hifive.data.model.NoticeData;
 import kr.co.hanwha.hifive.data.model.NotificationData;
 import kr.co.hanwha.hifive.data.model.UpdateData;
+import kr.co.hanwha.hifive.data.model.UpdateInfo;
+import kr.co.hanwha.hifive.data.source.MaximDataRepository;
 import kr.co.hanwha.hifive.data.source.MemberDataRepository;
 import kr.co.hanwha.hifive.dialog.HFDefaultDialog;
 import kr.co.hanwha.hifive.dialog.HFPickerDialog;
@@ -78,48 +81,9 @@ public class IntroPresenter implements IntroContract.Presenter {
                 MemberDataRepository.setUpdateData(response);
 
                 if (HFCommonUtil.checkUpdate(getContext(), response) == false) {
-                    NoticeData notice = checkNotice(response);
-                    HFInfoUtil.setNoticeData(getContext(), notice);
-
-                    if (response != null && response.isSimpleLoginYn()) {
-                        mView.showSimpleLogin();
-                    } else {
-                        mView.showAccountLogin();
-                    }
+                    showLoginView(response);
                 } else {
-                    String title = getContext().getString(R.string.app_name);
-                    String message = getContext().getString(R.string.alert_update_message);
-                    if (TextUtils.isEmpty(response.getUpdateInfo().getUpdate_notice()) == false)
-                        message = response.getUpdateInfo().getUpdate_notice();
-                    if (response.getUpdateInfo().isForced()) {//필수 업데이트
-                        mView.showAlert(title, message, new HFDefaultDialog.OnDialogCallback() {
-                            @Override
-                            public void onNegative() {
-                                getActivity().finish();
-                            }
-
-                            @Override
-                            public void onPositive() {
-                                doUpdate(response);
-                            }
-                        });
-                    } else {
-                        mView.showAlert(title, message, new HFDefaultDialog.OnDialogCallback() {
-                            @Override
-                            public void onNegative() {
-                                if (response != null && response.isSimpleLoginYn()) {
-                                    mView.showSimpleLogin();
-                                } else {
-                                    mView.showAccountLogin();
-                                }
-                            }
-
-                            @Override
-                            public void onPositive() {
-                                doUpdate(response);
-                            }
-                        });
-                    }
+                    showUpdateAlert(response);
                 }
             }
 
@@ -145,6 +109,55 @@ public class IntroPresenter implements IntroContract.Presenter {
         });
     }
 
+    @Override
+    public void showLoginView(@NonNull UpdateData response) {
+        NoticeData notice = checkNotice(response);
+        HFInfoUtil.setNoticeData(getContext(), notice);
+
+        if (response != null && response.isSimpleLoginYn()) {
+            mView.showSimpleLogin();
+        } else {
+            mView.showAccountLogin();
+        }
+    }
+
+    @Override
+    public void showUpdateAlert(@NonNull final UpdateData response) {
+        String title = getContext().getString(R.string.app_name);
+        String message = getContext().getString(R.string.alert_update_message);
+        if (TextUtils.isEmpty(response.getUpdateInfo().getUpdate_notice()) == false)
+            message = response.getUpdateInfo().getUpdate_notice();
+        if (response.getUpdateInfo().isForced()) {//필수 업데이트
+            mView.showAlert(title, message, new HFDefaultDialog.OnDialogCallback() {
+                @Override
+                public void onNegative() {
+                    getActivity().finish();
+                }
+
+                @Override
+                public void onPositive() {
+                    doUpdate(response);
+                }
+            });
+        } else {
+            mView.showAlert(title, message, new HFDefaultDialog.OnDialogCallback() {
+                @Override
+                public void onNegative() {
+                    if (response != null && response.isSimpleLoginYn()) {
+                        mView.showSimpleLogin();
+                    } else {
+                        mView.showAccountLogin();
+                    }
+                }
+
+                @Override
+                public void onPositive() {
+                    doUpdate(response);
+                }
+            });
+        }
+    }
+
     @Override
     public NoticeData checkNotice(@NonNull UpdateData updateData) {
         NoticeData data = null;
@@ -185,11 +198,7 @@ public class IntroPresenter implements IntroContract.Presenter {
         MemberDataRepository.getInstance().doSimpleLogin(getContext(), login_id, authcode, new HanwhaNetworkCallback() {
             @Override
             public void onSuccess(Object response) {
-
-                HFActivityUtil.startRootActivity(getActivity(), false);//Root
-
-                HFActivityUtil.startMainActivity(getActivity());
-                getActivity().finish();
+                getMaximList(false);
             }
 
             @Override
@@ -218,19 +227,11 @@ public class IntroPresenter implements IntroContract.Presenter {
                 HFInfoUtil.setMemberLoginId(getContext(), member_id);
                 HFInfoUtil.setLastMemberLoginId(getContext(), member_id);
 
-                HFActivityUtil.startRootActivity(getActivity(), false);//Root
-
-                if (response != null && response.isSimpleLoginYn() == false) {
-                    HFActivityUtil.startSetEasyLoginActivity(getActivity());
-                } else {
-                    HFActivityUtil.startMainActivity(getActivity());
-                }
-                getActivity().finish();
+                getMaximList(response != null && response.isSimpleLoginYn() == false);
             }
 
             @Override
             public void onFailure(HanwhaNetworkError error) {
-//                mView.showAlert(error);
                 mView.showAlertAccountMessage(error.getMessage());
                 mView.showLoadingDialog(false);
             }
@@ -247,6 +248,43 @@ public class IntroPresenter implements IntroContract.Presenter {
         });
     }
 
+    @Override
+    public void getMaximList(@NonNull final boolean needSetSimpleLogin) {
+        MaximDataRepository.getInstance().requestMaximList(getContext(), new HanwhaNetworkCallback() {
+            @Override
+            public void onSuccess(Object response) {
+                startMain(needSetSimpleLogin);
+            }
+
+            @Override
+            public void onFailure(HanwhaNetworkError error) {
+                startMain(needSetSimpleLogin);
+            }
+
+            @Override
+            public void onPreExecute() {
+
+            }
+
+            @Override
+            public void onPostExecute() {
+
+            }
+        });
+    }
+
+    @Override
+    public void startMain(@NonNull final boolean needSetSimpleLogin) {
+        HFActivityUtil.startRootActivity(getActivity(), false);//Root
+
+        if (needSetSimpleLogin) {
+            HFActivityUtil.startSetEasyLoginActivity(getActivity());
+        } else {
+            HFActivityUtil.startMainActivity(getActivity());
+        }
+        getActivity().finish();
+    }
+
     @Override
     public void doSignUp() {
         HFActivityUtil.startSignupActivity(getActivity());

+ 25 - 1
app/src/main/java/kr/co/hanwha/hifive/screen/intro/contract/IntroContract.java

@@ -7,6 +7,7 @@ import kr.co.hanwha.hifive.base.BasePresenter;
 import kr.co.hanwha.hifive.base.BaseView;
 import kr.co.hanwha.hifive.data.model.NoticeData;
 import kr.co.hanwha.hifive.data.model.UpdateData;
+import kr.co.hanwha.hifive.data.model.UpdateInfo;
 
 /**
  * Created by sanghoonkwon on 2018. 1. 11..
@@ -57,6 +58,16 @@ public interface IntroContract {
          */
         void checkUpdate();
 
+        /**
+         * 로그인
+         */
+        void showLoginView(@NonNull UpdateData response);
+
+        /**
+         * 업데이트 확인 팝업
+         */
+        void showUpdateAlert(@NonNull UpdateData response);
+
         /**
          * 공지사항 확인
          *
@@ -66,7 +77,7 @@ public interface IntroContract {
         NoticeData checkNotice(@NonNull UpdateData updateData);
 
         /**
-         * 업데이트 확인
+         * 업데이트
          *
          * @param data 업데이트 데이터
          */
@@ -87,6 +98,19 @@ public interface IntroContract {
          */
         void doSimpleLogin(@NonNull String authcode);
 
+        /**
+         * 명언 목록 조회
+         * @param needSetSimpleLogin Boolean
+         */
+        void getMaximList(@NonNull boolean needSetSimpleLogin);
+
+        /**
+         * 메인 시작
+         *
+         * @param needSetSimpleLogin Boolean
+         */
+        void startMain(@NonNull boolean needSetSimpleLogin);
+
         /**
          * 회원가입
          */

+ 6 - 2
app/src/main/res/layout/item_main_empty_famous_saying_list.xml

@@ -17,16 +17,20 @@
             style="@style/font_notosans_b_23sp_grey09"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
+            android:layout_marginLeft="16dp"
+            android:layout_marginRight="16dp"
             android:gravity="center"
-            android:text="포기하지 않으면 길은 있어!" />
+            android:text="@string/maxim_contents" />
 
         <kr.co.hanwha.hifive.view.FontTextView
             android:id="@+id/subTitle_textView"
             style="@style/font_notosans_r_14sp_grey09"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
+            android:layout_marginLeft="16dp"
+            android:layout_marginRight="16dp"
             android:layout_marginTop="12.5dp"
             android:gravity="center"
-            android:text="드래곤볼 中" />
+            android:text="@string/maxim_source" />
     </LinearLayout>
 </LinearLayout>

+ 3 - 0
app/src/main/res/values/strings.xml

@@ -226,6 +226,9 @@
     <string name="search_result_count">검색 결과 %d건</string>
     <string name="search_result_count_title">검색 결과</string>
 
+    <string name="maxim_contents">포기하지 않으면 길은 있어!</string>
+    <string name="maxim_source">드래곤볼 中</string>
+
     <string name="heart">
     M25.119,2.564c12.434,0.023,18.68,5.892,24.88,17.612  c6.2-11.721,12.446-17.589,24.877-17.612c13.81-0.025,25.035,10.575,25.061,23.66c0.033,23.708-24.952,47.46-49.938,71.212  C25.016,73.685,0.03,49.932,0.064,26.224C0.085,13.14,11.309,2.539,25.119,2.564z
     </string>