Skip to content

Commit

Permalink
每日签到,检查登录
Browse files Browse the repository at this point in the history
  • Loading branch information
DENUA committed Jan 26, 2019
1 parent ae61763 commit f3fb132
Show file tree
Hide file tree
Showing 3 changed files with 71 additions and 56 deletions.
2 changes: 1 addition & 1 deletion app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ android {
minSdkVersion 21
targetSdkVersion 27
versionCode 1
versionName "alpha-2.0"
versionName "alpha-2.0.1"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
Expand Down
29 changes: 13 additions & 16 deletions app/src/main/java/cn/denua/v2ex/Config.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
import android.content.Context;
import android.content.SharedPreferences;
import android.support.annotation.Nullable;
import android.support.design.widget.TabLayout;

import com.google.gson.Gson;

import java.io.Serializable;
Expand All @@ -32,21 +34,13 @@ public class Config {

private static Account sAccount;

/**
* 负数表示今日已签到 <br>
* 0 表示未连续签到 <br>
* 正数表示今日未签到 <br>
*/
public static int sSignIn = 0;

private static ArrayList<TabEnum> HOME_TAB_TITLES = new ArrayList<>();

static final ArrayList<TabEnum> HOME_TAB_DEFAULT = new ArrayList<TabEnum>(){{
add(TabEnum.LATEST);
add(TabEnum.HOT);
add(TabEnum.CHANGES);
}};
public static final ArrayList<Locale> LOCAL_LIST = new ArrayList<Locale>(){{

public static final ArrayList<Locale> LOCAL_LIST = new ArrayList<Locale>(){{
add(Locale.CHINA);
add(Locale.US);
add(Locale.JAPAN);
Expand All @@ -66,7 +60,6 @@ public static void setAccount(Account account){
*/
public static void init(Context context){

setAccount(new Account());
loadConfig(context);
restoreAccount();
}
Expand Down Expand Up @@ -140,16 +133,20 @@ private static void loadConfig(Context context){
? (Serializable) pref.get(key)
: refEnum.getDefaultValue());
}
HOME_TAB_TITLES.clear();
Set<String> homeTabs = preferences.getStringSet(ConfigRefEnum.CONFIG_HOME_TAB.getKey(),
new TreeSet<String>(){{add(TabEnum.ALL.getTitle());}});
Set<String> homeTabs = preferences.getStringSet(
ConfigRefEnum.CONFIG_HOME_TAB.getKey(), null);
if (homeTabs == null){
CONFIG.put(ConfigRefEnum.CONFIG_HOME_TAB, HOME_TAB_DEFAULT);
return;
}
ArrayList<TabEnum> tabEnums = new ArrayList<>();
for (String tab:homeTabs){
TabEnum tabEnum = TabEnum.contains(tab)
? TabEnum.valueOf(tab)
: TabEnum.findByDescriptor(tab);
HOME_TAB_TITLES.add(tabEnum);
tabEnums.add(tabEnum);
}
CONFIG.put(ConfigRefEnum.CONFIG_HOME_TAB, HOME_TAB_TITLES);
CONFIG.put(ConfigRefEnum.CONFIG_HOME_TAB, tabEnums);
}
}

96 changes: 57 additions & 39 deletions app/src/main/java/cn/denua/v2ex/ui/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
import android.widget.ImageView;
import android.widget.TextView;

import com.blankj.utilcode.util.PermissionUtils;
import com.blankj.utilcode.util.ToastUtils;
import com.bumptech.glide.Glide;

Expand Down Expand Up @@ -67,6 +66,13 @@ public class MainActivity extends BaseNetworkActivity implements NavigationView.
private MenuItem miSignIn;

private Account mAccount;
/**
* 负数表示签到天数, 今日已签到 <br>
* 0 表示未连续签到, 今日未签到 <br>
* 正数表示今日未签到 <br>
*/
static int sSignIn = 0;
private boolean isSigned = false;

@Override
protected void onCreate(Bundle savedInstanceState) {
Expand All @@ -79,7 +85,8 @@ protected void onCreate(Bundle savedInstanceState) {

ButterKnife.bind(this);
initView();
checkLoginStatus();

checkLoginAndSignStatus();
}

protected void initView(){
Expand Down Expand Up @@ -131,18 +138,14 @@ protected void onStart() {
protected void onResume() {
super.onResume();

if (!PermissionUtils.isGranted("android.permission.WRITE_EXTERNAL_STORAGE")){
DialogUtil.showMessage(this,
getString(R.string.alert),
getString(R.string.need_storage_permission),
value -> PermissionUtils.launchAppDetailsSettings());
}
if (Config.sSignIn < 0){
updateSignInMenu(Config.sSignIn * -1, false);
}
if (Config.sSignIn > 0){
updateSignInMenu(Config.sSignIn, true);
}
// if (!PermissionUtils.isGranted("android.permission.WRITE_EXTERNAL_STORAGE")){
// DialogUtil.showMessage(this,
// getString(R.string.alert),
// getString(R.string.need_storage_permission),
// value -> PermissionUtils.launchAppDetailsSettings());
// }

updateSignInMenu();
}

@Override
Expand Down Expand Up @@ -210,15 +213,26 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {

switch (requestCode){
case LOGIN_REQUEST_CODE:
if (resultCode == LoginActivity.RESULT_SUCCESS)
setUserStatus();
onActivityResultLogin(resultCode);
break;
default:
break;
}

}

private void onActivityResultLogin(int resultCode){

if (resultCode == LoginActivity.RESULT_SUCCESS){
setUserStatus();
if (Config.getConfig(ConfigRefEnum.CONFIG_AUTO_CHECK)){
signIn();
}else {
checkDailySignIn();
}
}
}

private void signIn(){

if (!mAccount.isLogin()){
Expand All @@ -229,8 +243,8 @@ private void signIn(){
@Override
public void onComplete(Integer result) {
ToastUtils.showShort("签到成功, 连续签到天数 " + result.toString());
Config.sSignIn = result;
updateSignInMenu(result, false);
sSignIn = result;
updateSignInMenu();
}
@Override
public void onFailed(String msg) {
Expand Down Expand Up @@ -261,7 +275,7 @@ private void logout(){
Config.persistentAccount(this);
RetrofitManager.clearCookies();
setUserStatus();
updateSignInMenu(-1, true);
updateSignInMenu();
}

private void setUserStatus(){
Expand All @@ -283,38 +297,42 @@ private void setUserStatus(){
}
}

private void updateSignInMenu(int days, boolean enabled){
private void updateSignInMenu(){

miSignIn.setTitle(days > 0 ? "已连续签到 " + days + " 天" : getString(R.string.checked));
miSignIn.setTitle(sSignIn != 0 ? "已连续签到 " + Math.abs(sSignIn) + " 天" : getString(R.string.checked));
boolean enabled = sSignIn >= 0;
miSignIn.setEnabled(enabled);
miSignIn.setCheckable(enabled);
}

private void checkLoginStatus(){
private void checkLoginAndSignStatus(){

if (!mAccount.isLogin()) {
UserService.getInfo(new ResponseListener<Account>() {
@Override
public void onFailed(String msg) {
mAccount.logout();
}
@Override
public void onComplete(Account result) {
Config.setAccount(result);
checkDailySignIn();
}
});
}else{
checkDailySignIn();
}
UserService.getInfo(new ResponseListener<Account>() {
@Override
public void onFailed(String msg) {
mAccount.logout();
}
@Override
public void onComplete(Account result) {
Config.setAccount(result);
checkDailySignIn();
setUserStatus();
}
});
}

private void checkDailySignIn(){

setUserStatus();
UserService.signIn(true, new ResponseListener<Integer>() {
@Override
public void onComplete(Integer result) {
Config.sSignIn = result;
sSignIn = result;
mAccount.setSign(result);
if (sSignIn >= 0){
if (Config.getConfig(ConfigRefEnum.CONFIG_AUTO_CHECK)) signIn();
}
updateSignInMenu();
setUserStatus();
}
@Override
public void onFailed(String msg) {
Expand Down

0 comments on commit f3fb132

Please sign in to comment.