Skip to content

Commit e2b810b

Browse files
committed
check versions
fix on fonts
1 parent 035bc48 commit e2b810b

18 files changed

Lines changed: 512 additions & 9 deletions

File tree

app/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ android {
66
applicationId "com.criapp_studio.coreapp"
77
minSdkVersion rootProject.ext.minSdkVersion
88
targetSdkVersion rootProject.ext.compileSdkVersion
9-
versionCode 1
9+
versionCode 2
1010
versionName "1.0"
1111
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
1212
}

app/src/main/AndroidManifest.xml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<manifest package="com.criapp_studio.coreapp"
2+
<manifest xmlns:tools="http://schemas.android.com/tools"
3+
package="com.criapp_studio.coreapp"
34
xmlns:android="http://schemas.android.com/apk/res/android">
45

56
<application
@@ -9,7 +10,10 @@
910
android:label="@string/app_name"
1011
android:roundIcon="@mipmap/ic_launcher_round"
1112
android:supportsRtl="true"
12-
android:theme="@style/AppTheme">
13+
android:theme="@style/AppTheme"
14+
android:usesCleartextTraffic="true"
15+
tools:ignore="GoogleAppIndexingWarning,UnusedAttribute">
16+
<!-- usesCleartextTraffic="true" only to test fake versions-->
1317
<activity android:name=".ui.login.LoginActivity">
1418
<intent-filter>
1519
<action android:name="android.intent.action.MAIN"/>

app/src/main/java/com/criapp_studio/coreapp/ui/login/LoginActivity.java

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,21 @@
77
import android.view.View;
88
import android.widget.FrameLayout;
99

10+
import com.criapp_studio.coreapp.BuildConfig;
1011
import com.criapp_studio.coreapp.R;
12+
import com.futurist_labs.android.base_library.repository.network.Action;
13+
import com.futurist_labs.android.base_library.repository.network.MainCallback;
1114
import com.futurist_labs.android.base_library.ui.BaseActivity;
15+
import com.futurist_labs.android.base_library.ui.versions.UpdateDialogFragment;
1216
import com.futurist_labs.android.base_library.utils.FragmentUtils;
17+
import com.futurist_labs.android.base_library.utils.versions.VersionsUtil;
1318
import com.futurist_labs.android.base_library.views.font_views.FontTextView;
1419

15-
public class LoginActivity extends BaseActivity<LoginViewModel> implements LoginFragment.OnFragmentInteractionListener {
20+
public class LoginActivity extends BaseActivity<LoginViewModel> implements LoginFragment.OnFragmentInteractionListener, UpdateDialogFragment.Callback {
1621

1722
private FrameLayout flContainer;
1823
private FontTextView tvHello;
24+
private boolean initOnResume = false;
1925

2026
@Override
2127
protected void onCreate(Bundle savedInstanceState) {
@@ -25,6 +31,27 @@ protected void onCreate(Bundle savedInstanceState) {
2531
initView();
2632

2733
if (savedInstanceState == null) {//else is recreate
34+
new VersionsUtil().checkVersions(this, activityViewModel.getNetworkCallback(),
35+
new Action(Action.GET_UNAUTHORIZED, "http://www.mocky.io/v2/5d6525d23400002c00f44600", null)
36+
.setIsCheckServerUrl(false)
37+
.setFullUrl(true),
38+
MainCallback.TYPE_DIALOG, BuildConfig.VERSION_CODE,
39+
new VersionsUtil.Callback() {
40+
@Override
41+
public void onEnd(int status) {
42+
if (status != VersionsUtil.ACTION_MUST_UPDATE && status != VersionsUtil.ACTION_CAN_UPDATE) {
43+
activityViewModel.init();
44+
}
45+
}
46+
});
47+
}
48+
}
49+
50+
@Override
51+
protected void onResume() {
52+
super.onResume();
53+
if (initOnResume) {
54+
initOnResume = false;
2855
activityViewModel.init();
2956
}
3057
}
@@ -82,4 +109,14 @@ private void initView() {
82109
flContainer = findViewById(R.id.flContainer);
83110
tvHello = findViewById(R.id.tvHello);
84111
}
112+
113+
@Override
114+
public void onDismiss() {
115+
activityViewModel.init();
116+
}
117+
118+
@Override
119+
public void goToStore() {
120+
initOnResume = true;
121+
}
85122
}

app/src/main/res/layout/fragment_login.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,12 +69,23 @@
6969
android:text="@string/btn_login"
7070
app:TvType="bold"/>
7171

72+
<com.futurist_labs.android.base_library.views.font_views.FontTextView
73+
android:layout_width="wrap_content"
74+
android:layout_height="wrap_content"
75+
android:layout_gravity="center_horizontal"
76+
android:layout_marginTop="@dimen/margin_normal"
77+
android:background="@color/colorAccent"
78+
android:text="@string/btn_login"
79+
android:textSize="30sp"
80+
app:tv_font="Comfortaa-Bold.ttf"/>
81+
7282
<com.futurist_labs.android.base_library.views.font_views.FontTextView
7383
android:layout_width="wrap_content"
7484
android:layout_height="wrap_content"
7585
android:layout_gravity="center_horizontal"
7686
android:layout_marginTop="@dimen/margin_normal"
7787
android:background="@color/colorAccent"
7888
android:baselineAligned="false"
89+
android:textSize="30sp"
7990
android:text="@string/btn_login"/>
8091
</LinearLayout>
Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
1-
<manifest package="com.futurist_labs.android.base_library"
2-
xmlns:android="http://schemas.android.com/apk/res/android">
3-
<uses-permission android:name="android.permission.INTERNET"/>
4-
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
1+
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
2+
package="com.futurist_labs.android.base_library">
3+
4+
<uses-permission android:name="android.permission.INTERNET" />
5+
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
6+
7+
<application>
8+
<activity android:name=".ui.versions.UpdateActivity"></activity>
9+
</application>
510
</manifest>
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.futurist_labs.android.base_library.ui.versions;
2+
3+
import android.content.Context;
4+
import android.content.Intent;
5+
import android.os.Bundle;
6+
import android.support.v7.app.AppCompatActivity;
7+
import android.view.View;
8+
9+
import com.futurist_labs.android.base_library.R;
10+
import com.futurist_labs.android.base_library.model.BaseLibraryConfiguration;
11+
import com.futurist_labs.android.base_library.utils.IntentUtils;
12+
13+
public class UpdateActivity extends AppCompatActivity {
14+
15+
public static void show(Context context) {
16+
Intent starter = new Intent(context, UpdateActivity.class);
17+
starter.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
18+
context.startActivity(starter);
19+
}
20+
21+
@Override
22+
protected void onCreate(Bundle savedInstanceState) {
23+
super.onCreate(savedInstanceState);
24+
setContentView(R.layout.activity_update);
25+
findViewById(R.id.btnUpdate).setOnClickListener(new View.OnClickListener() {
26+
@Override
27+
public void onClick(View v) {
28+
IntentUtils.openAppInPlayStore(UpdateActivity.this,
29+
BaseLibraryConfiguration.getInstance().APPLICATION_ID);
30+
}
31+
});
32+
}
33+
}
Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
package com.futurist_labs.android.base_library.ui.versions;
2+
3+
4+
import android.content.Context;
5+
import android.graphics.Color;
6+
import android.graphics.drawable.ColorDrawable;
7+
import android.os.Bundle;
8+
import android.support.annotation.NonNull;
9+
import android.support.annotation.Nullable;
10+
import android.support.v4.app.DialogFragment;
11+
import android.support.v4.app.Fragment;
12+
import android.view.LayoutInflater;
13+
import android.view.View;
14+
import android.view.ViewGroup;
15+
import android.view.Window;
16+
17+
import com.futurist_labs.android.base_library.R;
18+
import com.futurist_labs.android.base_library.model.BaseLibraryConfiguration;
19+
import com.futurist_labs.android.base_library.utils.IntentUtils;
20+
import com.futurist_labs.android.base_library.utils.versions.Versions;
21+
import com.futurist_labs.android.base_library.views.font_views.FontTextView;
22+
23+
/**
24+
* A simple {@link Fragment} subclass.
25+
* Use the {@link UpdateDialogFragment#newInstance} factory method to
26+
* create an instance of this fragment.
27+
*/
28+
public class UpdateDialogFragment extends DialogFragment {
29+
private static final String ARG_VERSIONS = "param1";
30+
private Callback callback;
31+
private Versions versions;
32+
private FontTextView tvNextTime;
33+
private FontTextView tvGoToStore;
34+
35+
public UpdateDialogFragment() {
36+
// Required empty public constructor
37+
}
38+
39+
public static UpdateDialogFragment newInstance(Versions versions) {
40+
UpdateDialogFragment fragment = new UpdateDialogFragment();
41+
Bundle args = new Bundle();
42+
args.putParcelable(ARG_VERSIONS, versions);
43+
fragment.setArguments(args);
44+
return fragment;
45+
}
46+
47+
@Override
48+
public void onCreate(Bundle savedInstanceState) {
49+
super.onCreate(savedInstanceState);
50+
if (getArguments() != null) {
51+
versions = getArguments().getParcelable(ARG_VERSIONS);
52+
}
53+
}
54+
55+
@Override
56+
public void onAttach(Context context) {
57+
super.onAttach(context);
58+
if (context instanceof Callback) {
59+
callback = (Callback) context;
60+
} else {
61+
throw new RuntimeException(context.toString()
62+
+ " must implement Callback");
63+
}
64+
}
65+
66+
@Override
67+
public void onDetach() {
68+
super.onDetach();
69+
callback = null;
70+
}
71+
72+
@Override
73+
public View onCreateView(LayoutInflater inflater, ViewGroup container,
74+
Bundle savedInstanceState) {
75+
getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);
76+
getDialog().setCancelable(false);
77+
if (getDialog().getWindow() != null) {
78+
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
79+
}
80+
// Inflate the layout for this fragment
81+
View view = inflater.inflate(R.layout.fragment_update_dialog, container, false);
82+
initView(view);
83+
return view;
84+
}
85+
86+
@Override
87+
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
88+
super.onViewCreated(view, savedInstanceState);
89+
// setCancelable(false);
90+
91+
tvNextTime.setOnClickListener(new View.OnClickListener() {
92+
@Override
93+
public void onClick(View v) {
94+
dismiss();
95+
if (callback != null) {
96+
callback.onDismiss();
97+
}
98+
}
99+
});
100+
101+
tvGoToStore.setOnClickListener(new View.OnClickListener() {
102+
@Override
103+
public void onClick(View v) {
104+
IntentUtils.openAppInPlayStore(getContext(),
105+
BaseLibraryConfiguration.getInstance().APPLICATION_ID);
106+
if (callback != null) {
107+
callback.goToStore();
108+
}
109+
dismiss();
110+
}
111+
});
112+
}
113+
114+
private void initView(View view) {
115+
tvNextTime = view.findViewById(R.id.tvNextTime);
116+
tvGoToStore = view.findViewById(R.id.tvGoToStore);
117+
}
118+
119+
120+
public interface Callback {
121+
void onDismiss();
122+
123+
void goToStore();
124+
}
125+
}
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package com.futurist_labs.android.base_library.utils.versions;
2+
3+
import android.os.Parcel;
4+
import android.os.Parcelable;
5+
6+
/**
7+
* Created by Galeen on 8/27/2019.
8+
*/
9+
public class Versions implements Parcelable {
10+
private int currentAndroidVersion;
11+
private int minimumAndroidVersion;
12+
13+
public int getCurrentAndroidVersion() {
14+
return currentAndroidVersion;
15+
}
16+
17+
public void setCurrentAndroidVersion(int currentAndroidVersion) {
18+
this.currentAndroidVersion = currentAndroidVersion;
19+
}
20+
21+
public int getMinimumAndroidVersion() {
22+
return minimumAndroidVersion;
23+
}
24+
25+
public void setMinimumAndroidVersion(int minimumAndroidVersion) {
26+
this.minimumAndroidVersion = minimumAndroidVersion;
27+
}
28+
29+
30+
@Override
31+
public int describeContents() {
32+
return 0;
33+
}
34+
35+
@Override
36+
public void writeToParcel(Parcel dest, int flags) {
37+
dest.writeInt(this.currentAndroidVersion);
38+
dest.writeInt(this.minimumAndroidVersion);
39+
}
40+
41+
public Versions() {
42+
}
43+
44+
protected Versions(Parcel in) {
45+
this.currentAndroidVersion = in.readInt();
46+
this.minimumAndroidVersion = in.readInt();
47+
}
48+
49+
public static final Creator<Versions> CREATOR = new Creator<Versions>() {
50+
@Override
51+
public Versions createFromParcel(Parcel source) {
52+
return new Versions(source);
53+
}
54+
55+
@Override
56+
public Versions[] newArray(int size) {
57+
return new Versions[size];
58+
}
59+
};
60+
}

0 commit comments

Comments
 (0)