· 9 years ago · Jun 20, 2017, 03:42 AM
1public class ChatLoginFragment extends Fragment {
2 private static final String TAG = "TUM";
3
4
5 private EditText etChatUsername;
6 private EditText etChatPassword;
7 private FloatingActionButton btnChatSignIn;
8 private FloatingActionButton btnChatSignUp;
9
10 private DatabaseReference mDatabase;
11 private FirebaseAuth mAuth;
12
13 private String _username;
14 private String _password;
15 SharedPreferences prefsRemember;
16 String email;
17 static String password;
18 static String _TokenFirebase ;
19 private String getLang;
20
21
22 public ChatLoginFragment() {
23 super();
24 }
25
26 public static ChatLoginFragment newInstance() {
27 ChatLoginFragment fragment = new ChatLoginFragment();
28 Bundle args = new Bundle();
29 fragment.setArguments(args);
30 return fragment;
31 }
32
33 @Override
34 public View onCreateView(LayoutInflater inflater, ViewGroup container,
35 Bundle savedInstanceState) {
36 View rootView = inflater.inflate(R.layout.fragment_chat_login, container, false);
37
38 prefsRemember = getActivity().getSharedPreferences("user",
39 0);
40 _TokenFirebase = FirebaseInstanceId.getInstance().getToken();
41
42 Log.d(TAG, "InstanceID token: " + FirebaseInstanceId.getInstance().getToken());
43
44
45
46 mDatabase = FirebaseDatabase.getInstance().getReference();
47 mAuth = FirebaseAuth.getInstance();
48
49 initInstances(rootView);
50 return rootView;
51 }
52
53 private void initInstances(View rootView) {
54 // init instance with rootView.findViewById here
55 //setRetainInstance(true);
56 etChatUsername = (EditText)rootView.findViewById(R.id.etChatUsername);
57 etChatPassword = (EditText)rootView.findViewById(R.id.etChatPassword);
58 btnChatSignIn = (FloatingActionButton)rootView.findViewById(R.id.btnChatSignIn);
59 btnChatSignUp = (FloatingActionButton)rootView.findViewById(R.id.btnChatSignUp);
60 setHasOptionsMenu(true);
61
62 getLang = GetLanguage.getInstance().GetLanguage();
63 if (getLang.equalsIgnoreCase("en")) {
64 etChatUsername.setTypeface(GetLanguage.getInstance().SetLangEng());
65 etChatPassword.setTypeface(GetLanguage.getInstance().SetLangEng());
66 // btnChatSignIn.setTypeface(GetLanguage.getInstance().SetLangEng());
67 // btnChatSignUp.setTypeface(GetLanguage.getInstance().SetLangEng());
68 } else if (getLang.equalsIgnoreCase("la")) {
69 etChatUsername.setTypeface(GetLanguage.getInstance().SetLangLao());
70 etChatPassword.setTypeface(GetLanguage.getInstance().SetLangLao());
71 // btnChatSignIn.setTypeface(GetLanguage.getInstance().SetLangLao());
72 // btnChatSignUp.setTypeface(GetLanguage.getInstance().SetLangLao());
73 }
74
75 btnChatSignIn.setOnClickListener(new View.OnClickListener() {
76 @Override
77 public void onClick(View v) {
78
79 if (etChatUsername.getText().toString().isEmpty()) {
80 Alert.SnackbarShow(getActivity() , "Please enter your username.");
81 etChatUsername.requestFocus();
82 return;
83 }
84 signIn();
85
86 }
87 });
88
89 btnChatSignUp.setOnClickListener(new View.OnClickListener() {
90 @Override
91 public void onClick(View v) {
92 if (etChatUsername.getText().toString().isEmpty()) {
93 Alert.SnackbarShow(getActivity() , "Please enter your username.");
94 etChatUsername.requestFocus();
95 return;
96 }
97
98 if (etChatPassword.getText().toString().isEmpty()) {
99 Alert.SnackbarShow(getActivity() , "Please enter your password.");
100 etChatPassword.requestFocus();
101 return;
102 }
103 signUp();
104
105 }
106 });
107 }
108
109
110 @Override
111 public void onStart() {
112 super.onStart();
113
114 _username = prefsRemember.getString("email", null);
115 _password = prefsRemember.getString("password", null);
116
117
118 // Check auth on Activity start
119 if (mAuth.getCurrentUser() != null) {
120 // onAuthSuccess(mAuth.getCurrentUser());
121 if (_username != null) {
122 etChatUsername.setText(usernameFromEmail(_username));
123 etChatPassword.setText(_password);
124 //mPasswordField.setText(_password);
125 signIn();
126 //
127 } else {
128 onAuthSuccess(mAuth.getCurrentUser() , "");
129 }
130
131 }
132 }
133
134 @Override
135 public void onStop() {
136 super.onStop();
137 }
138
139 /*
140 * Save Instance State Here
141 */
142 @Override
143 public void onSaveInstanceState(Bundle outState) {
144 super.onSaveInstanceState(outState);
145 }
146
147 /*
148 * Restore Instance State Here
149 */
150 @Override
151 public void onActivityCreated(Bundle savedInstanceState) {
152 super.onActivityCreated(savedInstanceState);
153 }
154
155
156
157 private void signIn() {
158
159 //if (!validateForm()) {
160 // return;
161 //}
162
163 showProgressDialog();
164 if (_username != null) {
165 email = prefsRemember.getString("email", null);
166 //password = prefsRemember.getString("password", null);
167 password = prefsRemember.getString("password", null);
168
169 } else {
170 email = etChatUsername.getText().toString() + "@gmail.com";
171 password = etChatPassword.getText().toString();
172 }
173
174
175 mAuth.signInWithEmailAndPassword(email, password)
176 .addOnCompleteListener(new OnCompleteListener<AuthResult>() {
177 @Override
178 public void onComplete(@NonNull Task<AuthResult> task) {
179 Log.d(TAG, "signIn:onComplete:" + task.isSuccessful());
180
181 hideProgressDialog();
182 if (task.isSuccessful()) {
183
184 onAuthSuccess(task.getResult().getUser() , password);
185 } else {
186 Alert.SnackbarShow(getActivity() , "Sign In Failed, Please sign up before sign in.");
187 }
188 }
189 });
190
191
192 }
193
194
195 private void signUp() {
196 Log.d(TAG, "signUp");
197 if (!validateForm()) {
198 return;
199 }
200
201 showProgressDialog();
202 String email = etChatUsername.getText().toString() + "@gmail.com";
203 final String password = etChatPassword.getText().toString();
204
205 mAuth.createUserWithEmailAndPassword(email, password)
206 .addOnCompleteListener(new OnCompleteListener<AuthResult>() {
207 @Override
208 public void onComplete(@NonNull Task<AuthResult> task) {
209 Log.d(TAG, "createUser:onComplete:" + task.isSuccessful());
210 hideProgressDialog();
211
212 if (task.isSuccessful()) {
213 onAuthSuccess(task.getResult().getUser() , password);
214 } else {
215 Alert.SnackbarShow(getActivity() , "Username has already been taken, Please check number again.");
216 }
217 }
218 });
219 }
220
221 private void onAuthSuccess(FirebaseUser user , String Password) {
222 String username = usernameFromEmail(user.getEmail());
223 // hideProgressDialog();
224 // Write new user
225 if (username.equalsIgnoreCase("support")) {
226 writeNewUser(user.getUid(), username , "admin" , _TokenFirebase);
227 saveRemember(user.getUid() , username ,user.getEmail(), Password, "admin" , _TokenFirebase);
228 } else {
229 writeNewUser(user.getUid(), username , "customer" , _TokenFirebase);
230 saveRemember(user.getUid() , username ,user.getEmail(), Password, "customer" , _TokenFirebase);
231 }
232
233
234 // Go to MainActivity
235 Intent intent_login = new Intent(getActivity() , ChatForumActivity.class);
236 intent_login.putExtra("username" , username);
237 startActivity(intent_login);
238 getActivity().finish();
239 }
240
241 private String usernameFromEmail(String email) {
242 if (email.contains("@")) {
243 return email.split("@")[0];
244 } else {
245 return email;
246 }
247 }
248
249 private boolean validateForm() {
250 boolean result = true;
251 if (TextUtils.isEmpty(etChatUsername.getText().toString())) {
252 etChatUsername.setError("Required");
253 result = false;
254 } else {
255 etChatUsername.setError(null);
256 }
257
258
259 return result;
260 }
261
262 // [START basic_write]
263 private void writeNewUser(String userId, String name , String position , String Token) {
264 User user = new User(name , position ,Token);
265 mDatabase.child("users").child(userId).setValue(user);
266
267 }
268 // [END basic_write]
269
270
271 private ProgressDialog mProgressDialog;
272
273 public void showProgressDialog() {
274 if (mProgressDialog == null) {
275 mProgressDialog = new ProgressDialog(getActivity());
276 mProgressDialog.setCancelable(false);
277 mProgressDialog.setMessage("Loading...");
278 }
279 mProgressDialog.show();
280 }
281
282 public void hideProgressDialog() {
283 if (mProgressDialog != null && mProgressDialog.isShowing()) {
284 mProgressDialog.dismiss();
285 }
286 }
287
288
289
290 private void saveRemember(String UserId , String Username ,String Email, String Password , String posiotion , String Token) {
291 SharedPreferences prefsRemember = getActivity().getSharedPreferences("user" ,
292 Context.MODE_PRIVATE);
293 SharedPreferences.Editor editorRemember = prefsRemember.edit();
294 editorRemember.putString("usernameId" , UserId);
295 editorRemember.putString("username" , Username);
296 editorRemember.putString("email" , Email);
297 editorRemember.putString("password" , Password);
298 editorRemember.putString("position" , posiotion);
299 editorRemember.putString("token" , Token);
300 editorRemember.apply();
301 }
302
303 @Override
304 public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
305 inflater.inflate(R.menu.menu_chat_signin , menu);
306 super.onCreateOptionsMenu(menu, inflater);
307 }
308
309 @Override
310 public boolean onOptionsItemSelected(MenuItem item) {
311 if (item.getItemId() == R.id.action_chat_fb) {
312 PackageManager packageManager = getActivity().getPackageManager();
313 String facebookUrl = "https://www.facebook.com/mservices.laotel";
314 try {
315 int versionCode = packageManager.getPackageInfo("com.facebook.katana", 0).versionCode;
316 if (versionCode >= 3002850) {
317 Uri uri = Uri.parse("fb://facewebmodal/f?href=" + facebookUrl);
318 startActivity(new Intent(Intent.ACTION_VIEW, uri));;
319 } else {
320 // open the Facebook app using the old method (fb://profile/id or fb://page/id)
321 startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("fb://page/1419871388293508")));
322 }
323 } catch (PackageManager.NameNotFoundException e) {
324 // Facebook is not installed. Open the browser
325 startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(facebookUrl)));
326 }
327 }
328 return true;
329 }
330
331 public static String FACEBOOK_URL = "https://www.facebook.com/mservices.laotel";
332 public static String FACEBOOK_PAGE_ID = "mservices.laotel";
333
334 //method to get the right URL to use in the intent
335 public String getFacebookPageURL(Context context) {
336 PackageManager packageManager = context.getPackageManager();
337 try {
338 int versionCode = packageManager.getPackageInfo("com.facebook.katana", 0).versionCode;
339 if (versionCode >= 3002850) { //newer versions of fb app
340 return "fb://facewebmodal/f?href=" + FACEBOOK_URL;
341 } else { //older versions of fb app
342 return "fb://page/" + FACEBOOK_PAGE_ID;
343 }
344 } catch (PackageManager.NameNotFoundException e) {
345 return FACEBOOK_URL; //normal web url
346 }
347 }
348}