Skip to content
This repository was archived by the owner on Jun 5, 2024. It is now read-only.

Commit 92e87e4

Browse files
committed
添加我的订阅
1 parent 0b90213 commit 92e87e4

25 files changed

+839
-76
lines changed

module-discover/src/main/AndroidManifest.xml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,11 @@
2727
<activity android:name=".ui.BlogQuestionActivity" />
2828
<activity
2929
android:name=".ui.BlogQuestionDetailActivity"
30-
android:label="@string/label_question_detail"/>
30+
android:label="@string/label_question_detail" />
3131
<activity android:name=".ui.AntColumnActivity" />
32-
<activity android:name=".ui.AntColumnDetailActivity" />
32+
<activity
33+
android:name=".ui.AntColumnDetailActivity"
34+
android:launchMode="singleTop" />
35+
<activity android:name=".ui.AntUserColumnDetailActivity" />
3336
</application>
3437
</manifest>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.rae.cnblogs.discover;
2+
3+
public class SubscribeColumnMessage {
4+
private String columnId;
5+
6+
public String getColumnId() {
7+
return columnId;
8+
}
9+
10+
public SubscribeColumnMessage(String columnId) {
11+
this.columnId = columnId;
12+
}
13+
}

module-discover/src/main/java/com/rae/cnblogs/discover/column/detail/AntColumnDetailAdapter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ private void bindHeaderView(BaseViewHolder helper, ColumnDetailHeaderEntity item
7676
AntColumnInfo columnInfo = item.getColumnInfo();
7777
helper.setText(R.id.tv_title, columnInfo.getTitle());
7878
helper.setText(R.id.tv_sub_title, columnInfo.getRecommendation());
79-
helper.setText(R.id.tv_article_num, ApiUtils.formatNumber(columnInfo.getArticleNum()));
79+
helper.setText(R.id.tv_article_num, ApiUtils.formatNumber(columnInfo.getArticleCount()));
8080
helper.setText(R.id.tv_sub_num, ApiUtils.formatNumber(columnInfo.getSubnum()));
8181
AppImageLoader.display(columnInfo.getLogo(), (ImageView) helper.getView(R.id.img_logo));
8282
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.rae.cnblogs.discover.column.detail;
2+
3+
import android.content.Context;
4+
import android.support.annotation.Nullable;
5+
6+
import com.antcode.sdk.model.AntArticleInfo;
7+
import com.chad.library.adapter.base.BaseViewHolder;
8+
import com.rae.cnblogs.discover.R;
9+
import com.rae.cnblogs.discover.RaeBaseQuickAdapter;
10+
11+
import java.util.List;
12+
13+
public class AntUserColumnDetailAdapter extends RaeBaseQuickAdapter<AntArticleInfo, BaseViewHolder> {
14+
15+
16+
public AntUserColumnDetailAdapter(Context context, @Nullable List<AntArticleInfo> data) {
17+
super(context, R.layout.item_user_column_detail, data);
18+
}
19+
20+
@Override
21+
protected void convert(BaseViewHolder helper, AntArticleInfo item) {
22+
helper.setText(R.id.tv_title, item.getTitle());
23+
helper.setText(R.id.tv_summary, item.getSummary());
24+
}
25+
}

module-discover/src/main/java/com/rae/cnblogs/discover/fragment/AntColumnFragment.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,11 @@ public void onLoadMoreRequested() {
100100
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
101101
AntColumnInfo item = mAdapter.getItem(position);
102102
if (item == null) return;
103-
AppRoute.routeToAntColumnDetail(view.getContext(), item.getId());
103+
if (getType() == IAntColumnContract.TYPE_MY) {
104+
AppRoute.routeToAntUserColumnDetail(view.getContext(), item.getId());
105+
} else {
106+
AppRoute.routeToAntColumnDetail(view.getContext(), item.getId());
107+
}
104108
}
105109
});
106110

module-discover/src/main/java/com/rae/cnblogs/discover/fragment/DiscoverFragment.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ public class DiscoverFragment extends BasicFragment implements IDiscoverHomeCont
5858
private Banner mBanner;
5959
private ViewGroup mTabLayout;
6060
private int mCurrentBannerPosition;
61+
private List<AntAdInfo> mAdInfoList;
6162

6263
@Override
6364
protected int getLayoutId() {
@@ -117,7 +118,8 @@ private void initTabs() {
117118
}
118119

119120
@Override
120-
public void onLoadAds(final List<AntAdInfo> ads) {
121+
public void onLoadAds(List<AntAdInfo> ads) {
122+
mAdInfoList = ads;
121123
mRefreshLayout.setRefreshing(false);
122124

123125
if (mBanner == null) {
@@ -135,7 +137,7 @@ public void onPageSelected(int position) {
135137
banner.setOnBannerListener(new OnBannerListener() {
136138
@Override
137139
public void OnBannerClick(int position) {
138-
AntAdInfo adInfo = ads.get(position % ads.size());
140+
AntAdInfo adInfo = mAdInfoList.get(position % mAdInfoList.size());
139141
AppRoute.autoRoute(getContext(), adInfo.getType(), adInfo.getUrl(), adInfo.getData());
140142
}
141143
});
@@ -147,6 +149,7 @@ public void OnBannerClick(int position) {
147149
}
148150

149151
UICompat.setVisibility(mBanner, ads.size() > 0);
152+
150153
mBanner.setImages(ads).start();
151154
}
152155

module-discover/src/main/java/com/rae/cnblogs/discover/holder/AntColumnHolder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public void bindData(AntColumnInfo data) {
4949
AppImageLoader.display(data.getLogo(), logoView);
5050
}
5151
titleView.setText(data.getTitle());
52-
numberView.setText(numberView.getResources().getString(R.string.article_num_format, data.getArticleNum()));
52+
numberView.setText(numberView.getResources().getString(R.string.article_num_format, data.getArticleCount()));
5353
authorView.setText(String.format("%s %s", data.getAntAuthor().getNickname(), data.getAntAuthor().getTitle()));
5454
recommendationView.setText(data.getRecommendation());
5555
subNumView.setText(numberView.getResources().getString(R.string.sub_num_format, data.getSubnum()));

module-discover/src/main/java/com/rae/cnblogs/discover/presenter/AntColumnDetailPresenterImpl.java

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88
import com.antcode.sdk.model.AntEmptyInfo;
99
import com.rae.cnblogs.discover.AntCodeBasicPresenter;
1010
import com.rae.cnblogs.discover.AntSdkDefaultObserver;
11+
import com.rae.cnblogs.discover.SubscribeColumnMessage;
12+
13+
import org.greenrobot.eventbus.EventBus;
1114

1215
public class AntColumnDetailPresenterImpl extends AntCodeBasicPresenter<IAntColumnDetailContract.View> implements IAntColumnDetailContract.Presenter {
1316

@@ -23,35 +26,23 @@ public AntColumnDetailPresenterImpl(IAntColumnDetailContract.View view) {
2326

2427
@Override
2528
protected void onStart() {
26-
String columnId = getView().getColumnId();
29+
final String columnId = getView().getColumnId();
2730
mColumnApi.getColumnDetail(columnId).with(this).subscribe(new AntSdkDefaultObserver<AntColumnInfo>() {
2831
@Override
2932
protected void onError(String message) {
3033
getView().onLoadDataError(message);
34+
getView().onColumnSubscribe(false);
3135
}
3236

3337
@Override
3438
protected void accept(AntColumnInfo columnInfo) {
3539
mColumnInfo = columnInfo;
40+
getView().onColumnSubscribe(columnInfo.isSubscribe());
3641
getView().onLoadColumnDetail(columnInfo);
3742
}
3843
});
3944

40-
// 查询是否已经订阅
41-
mColumnApi.getUserColumnDetail(columnId)
42-
.with(this)
43-
.subscribe(new AntSdkDefaultObserver<AntColumnInfo>() {
44-
@Override
45-
protected void onError(String message) {
46-
// 不处理
47-
getView().onColumnSubscribe(false);
48-
}
4945

50-
@Override
51-
protected void accept(AntColumnInfo antColumnInfo) {
52-
getView().onColumnSubscribe(true);
53-
}
54-
});
5546
}
5647

5748
@Override
@@ -66,11 +57,20 @@ public void subscribe() {
6657
@Override
6758
protected void onError(String message) {
6859
getView().onSubscribeError(message);
60+
getView().onColumnSubscribe(false);
6961
}
7062

7163
@Override
7264
protected void accept(AntEmptyInfo antEmptyInfo) {
65+
EventBus.getDefault().post(new SubscribeColumnMessage(getView().getColumnId()));
7366
getView().onSubscribeSuccess();
67+
getView().onColumnSubscribe(true);
68+
}
69+
70+
@Override
71+
protected void onLoginExpired() {
72+
super.onLoginExpired();
73+
getView().onLoginExpired();
7474
}
7575
});
7676
}

module-discover/src/main/java/com/rae/cnblogs/discover/presenter/AntColumnPresenterImpl.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import com.rae.cnblogs.PageObservable;
88
import com.rae.cnblogs.discover.AntCodeBasicPresenter;
99
import com.rae.cnblogs.discover.AntPageObservable;
10+
import com.rae.cnblogs.discover.SubscribeColumnMessage;
1011

1112
import org.greenrobot.eventbus.EventBus;
1213
import org.greenrobot.eventbus.Subscribe;
@@ -53,6 +54,14 @@ public void OnLoginChanged(AntUserInfo userInfo) {
5354
onStart();
5455
}
5556

57+
@Subscribe
58+
public void onUnsubscribeColumnEvent(SubscribeColumnMessage msg) {
59+
// 取消订阅
60+
if (getView().getType() == IAntColumnContract.TYPE_MY) {
61+
onStart();
62+
}
63+
}
64+
5665
@Override
5766
protected void onStart() {
5867
mPageObservable.start();
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
package com.rae.cnblogs.discover.presenter;
2+
3+
import android.support.annotation.Nullable;
4+
5+
import com.antcode.sdk.AntCodeSDK;
6+
import com.antcode.sdk.IAntColumnApi;
7+
import com.antcode.sdk.model.AntArticleInfo;
8+
import com.antcode.sdk.model.AntColumnInfo;
9+
import com.antcode.sdk.model.AntEmptyInfo;
10+
import com.rae.cnblogs.discover.AntCodeBasicPresenter;
11+
import com.rae.cnblogs.discover.AntPageObservable;
12+
import com.rae.cnblogs.discover.AntSdkDefaultObserver;
13+
import com.rae.cnblogs.discover.SubscribeColumnMessage;
14+
15+
import org.greenrobot.eventbus.EventBus;
16+
17+
import java.util.List;
18+
19+
import io.reactivex.Observable;
20+
21+
public class AntUserColumnDetailPresenterImpl extends AntCodeBasicPresenter<IAntUserColumnDetailContract.View> implements IAntUserColumnDetailContract.Presenter {
22+
23+
private final IAntColumnApi mColumnApi;
24+
25+
@Nullable
26+
private AntColumnInfo mColumnInfo;
27+
28+
private AntPageObservable<AntArticleInfo> mPageObservable;
29+
30+
public AntUserColumnDetailPresenterImpl(IAntUserColumnDetailContract.View view) {
31+
super(view);
32+
AntCodeSDK antCodeSDK = AntCodeSDK.getInstance();
33+
mColumnApi = antCodeSDK.getColumnApi();
34+
mPageObservable = new AntPageObservable<AntArticleInfo>(view, this) {
35+
@Override
36+
protected Observable<List<AntArticleInfo>> onCreateObserver(int page) {
37+
final String columnId = getView().getColumnId();
38+
return mColumnApi.getColumnArticles(columnId, page);
39+
}
40+
};
41+
}
42+
43+
@Override
44+
protected void onStart() {
45+
final String columnId = getView().getColumnId();
46+
mColumnApi.getUserColumnDetail(columnId).with(this).subscribe(new AntSdkDefaultObserver<AntColumnInfo>() {
47+
@Override
48+
protected void onError(String message) {
49+
getView().onLoadDataError(message);
50+
}
51+
52+
@Override
53+
protected void accept(AntColumnInfo columnInfo) {
54+
mColumnInfo = columnInfo;
55+
getView().onLoadColumnDetail(columnInfo);
56+
}
57+
58+
@Override
59+
protected void onLoginExpired() {
60+
super.onLoginExpired();
61+
getView().onLoginExpired();
62+
}
63+
});
64+
}
65+
66+
67+
@Override
68+
public void loadData() {
69+
mPageObservable.start();
70+
}
71+
72+
@Override
73+
public void loadMore() {
74+
mPageObservable.loadMore();
75+
}
76+
77+
@Override
78+
public void unsubscribe() {
79+
mColumnApi.unsubscribe(getView().getColumnId())
80+
.with(this)
81+
.subscribe(new AntSdkDefaultObserver<AntEmptyInfo>() {
82+
@Override
83+
protected void onError(String message) {
84+
getView().onUnsubscribeError(message);
85+
}
86+
87+
@Override
88+
protected void accept(AntEmptyInfo antEmptyInfo) {
89+
EventBus.getDefault().post(new SubscribeColumnMessage(getView().getColumnId()));
90+
getView().onUnsubscribeSuccess();
91+
}
92+
});
93+
}
94+
}

module-discover/src/main/java/com/rae/cnblogs/discover/presenter/IAntColumnDetailContract.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,5 +33,7 @@ interface View extends IPresenterView {
3333

3434
// 专栏是否订阅
3535
void onColumnSubscribe(boolean subscribe);
36+
37+
void onLoginExpired();
3638
}
3739
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.rae.cnblogs.discover.presenter;
2+
3+
import com.antcode.sdk.model.AntArticleInfo;
4+
import com.antcode.sdk.model.AntColumnInfo;
5+
import com.rae.cnblogs.basic.IPageView;
6+
import com.rae.cnblogs.basic.IPresenter;
7+
import com.rae.cnblogs.basic.IPresenterView;
8+
9+
public interface IAntUserColumnDetailContract {
10+
11+
interface Presenter extends IPresenter {
12+
void loadData();
13+
void loadMore();
14+
15+
void unsubscribe();
16+
}
17+
18+
interface View extends IPageView<AntArticleInfo>, IPresenterView {
19+
20+
// 获取专栏ID
21+
String getColumnId();
22+
23+
// 加载专栏详情
24+
void onLoadColumnDetail(AntColumnInfo columnInfo);
25+
26+
// 加载数据失败
27+
void onLoadDataError(String message);
28+
29+
void onLoginExpired();
30+
31+
void onUnsubscribeSuccess();
32+
33+
void onUnsubscribeError(String message);
34+
}
35+
}

0 commit comments

Comments
 (0)