Skip to content

Commit 1e01330

Browse files
author
Massimiliano
committed
Pubblicati i file mancanti
1 parent f51e16b commit 1e01330

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+4323
-9
lines changed

.idea/inspectionProfiles/Project_Default.xml

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/vcs.xml

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

CHANGELOG

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
## Changelog: ##
2+
23
#### [v0.2 (Online)](https://github.com/Fast0n/BeerCoastersCollection/releases/tag/v0.2)
34
* Integrazione con Firebase Authentication, Database, Crashlytics e Notification
45
* Integrazione con l'Autofill di Android Oreo
56
* Aggiunte le schermate di ripristino password e impostazioni
67
* Aggiunto un sistema di creazione della password sicura
78
* Aggiornata la grafica in Material Design e aggiunta la splash screen
89
* Corretto il controllo dei campi
10+
* Corretta la visualizzazione del nome
911
#### Librerie aggiunte ####
1012
* Aggiunte le varie librerie di Google per Firebase
1113
* Aggiunta la libreria di @yshrsmz per il controllo apertura/chiusura della tastiera

app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ dependencies {
4848
compile 'com.google.firebase:firebase-core:11.8.0'
4949
//Add keyboard library
5050
compile 'net.yslibrary.keyboardvisibilityevent:keyboardvisibilityevent:2.1.0'
51-
//Add library spinner
52-
compile 'com.github.ganfra:material-spinner:2.0.0'
51+
//Add fab library
52+
compile 'com.github.clans:fab:1.6.2'
5353
}
5454
apply plugin: 'com.google.gms.google-services'

app/src/main/java/com/fast0n/beercoasterscollection/DeleteAccountActivity.java

Lines changed: 450 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 290 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,290 @@
1+
package com.fast0n.beercoasterscollection;
2+
3+
import android.content.Context;
4+
import android.content.Intent;
5+
import android.graphics.Color;
6+
import android.net.ConnectivityManager;
7+
import android.os.Handler;
8+
import android.support.annotation.NonNull;
9+
import android.support.v7.app.AppCompatActivity;
10+
import android.os.Bundle;
11+
import android.view.KeyEvent;
12+
import android.view.View;
13+
import android.view.inputmethod.EditorInfo;
14+
import android.view.inputmethod.InputMethodManager;
15+
import android.widget.Button;
16+
import android.widget.EditText;
17+
import android.widget.ProgressBar;
18+
import android.widget.TextView;
19+
import android.widget.Toast;
20+
21+
import com.fast0n.beercoasterscollection.java.DatabaseInformation;
22+
import com.google.android.gms.tasks.OnCompleteListener;
23+
import com.google.android.gms.tasks.Task;
24+
import com.google.firebase.auth.FirebaseAuth;
25+
import com.google.firebase.database.DataSnapshot;
26+
import com.google.firebase.database.DatabaseError;
27+
import com.google.firebase.database.DatabaseReference;
28+
import com.google.firebase.database.FirebaseDatabase;
29+
import com.google.firebase.database.Query;
30+
import com.google.firebase.database.ValueEventListener;
31+
32+
import java.util.regex.Matcher;
33+
import java.util.regex.Pattern;
34+
35+
import es.dmoral.toasty.Toasty;
36+
37+
public class HelpActivity extends AppCompatActivity {
38+
39+
private EditText email_field;
40+
private Button reset_button;
41+
private TextView back_button;
42+
InputMethodManager keyboard;
43+
44+
private FirebaseAuth auth;
45+
private FirebaseDatabase database;
46+
private DatabaseReference databaseRef;
47+
48+
@Override
49+
protected void onCreate(Bundle savedInstanceState) {
50+
super.onCreate(savedInstanceState);
51+
setContentView(R.layout.activity_help);
52+
53+
/**
54+
* Indirizzi java
55+
*/
56+
email_field = (EditText) findViewById(R.id.editText);
57+
reset_button = (Button) findViewById(R.id.button);
58+
back_button = (TextView) findViewById(R.id.button2);
59+
keyboard = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
60+
61+
/**
62+
* Colore Navbar
63+
*/
64+
getWindow().setNavigationBarColor(Color.BLACK);
65+
66+
/**
67+
* Firebase
68+
*/
69+
auth = FirebaseAuth.getInstance();
70+
database = FirebaseDatabase.getInstance();
71+
databaseRef = database.getReference();
72+
73+
/**
74+
* Nascondi/mostra il cursore quando si tocca il campo all'apertura dell'activity
75+
*/
76+
email_field.setOnClickListener(new View.OnClickListener() {
77+
@Override
78+
public void onClick(View v) {
79+
email_field.setFocusable(true);
80+
email_field.setFocusableInTouchMode(true);
81+
email_field.requestFocus();
82+
keyboard.showSoftInput(email_field, 0);
83+
84+
}
85+
});
86+
87+
/**
88+
* Click del tasto con la tastiera
89+
*/
90+
email_field.setOnEditorActionListener(new TextView.OnEditorActionListener() {
91+
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
92+
if ((event != null && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER))
93+
|| (actionId == EditorInfo.IME_ACTION_DONE)) {
94+
reset_button.performClick();
95+
}
96+
return false;
97+
}
98+
});
99+
100+
back_button.setOnClickListener(new View.OnClickListener() {
101+
@Override
102+
public void onClick(View v) {
103+
Intent mainActivity = new Intent(HelpActivity.this, LoginActivity.class);
104+
mainActivity.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
105+
startActivity(mainActivity);
106+
}
107+
});
108+
109+
}
110+
111+
public void CheckFields(final View view) {
112+
/**
113+
* Al click del tasto c'è un controllo dei campi:
114+
* - controlla se è vuoto o minore di 5.
115+
*/
116+
disableField();
117+
118+
if (email_field.getText().toString().equals("")) {
119+
email_field.setError(getString(R.string.error));
120+
enableField();
121+
}
122+
123+
else if (email_field.getText().length() < 5) {
124+
email_field.setError(getString(R.string.errorLength));
125+
enableField();
126+
} else {
127+
reset_button.setBackgroundDrawable(getDrawable(R.drawable.button_border));
128+
reset_button.setTextColor(Color.BLACK);
129+
130+
if (isOnline()) {
131+
132+
final Query query = databaseRef.child("users").orderByChild("email")
133+
.equalTo(email_field.getText().toString().toLowerCase());
134+
135+
final Query query2 = databaseRef.child("users").orderByChild("username")
136+
.equalTo(email_field.getText().toString().toLowerCase());
137+
138+
if (isEmail(email_field.getText().toString())) {
139+
query.addListenerForSingleValueEvent(new ValueEventListener() {
140+
@Override
141+
public void onDataChange(DataSnapshot dataSnapshot) {
142+
143+
String email = dataSnapshot.toString().split("=")[2].replace(" {", "");
144+
145+
if (email.equals(" null }")) {
146+
email_field.setError(getString(R.string.errorEmail));
147+
enableField();
148+
} else {
149+
keyboard.hideSoftInputFromWindow(view.getWindowToken(), 0);
150+
resetPasswordEmail(email_field.getText().toString());
151+
152+
}
153+
154+
}
155+
156+
@Override
157+
public void onCancelled(DatabaseError databaseError) {
158+
159+
}
160+
});
161+
} else {
162+
163+
query2.addListenerForSingleValueEvent(new ValueEventListener() {
164+
@Override
165+
public void onDataChange(DataSnapshot dataSnapshot) {
166+
167+
final String username = dataSnapshot.toString().split("=")[2].replace(" {", "");
168+
169+
if (username.equals(" null }")) {
170+
email_field.setError(getString(R.string.errorUsernameExists));
171+
enableField();
172+
} else if (email_field.getText().toString().equals(username.toLowerCase())
173+
|| email_field.getText().toString().equals(username)) {
174+
keyboard.hideSoftInputFromWindow(view.getWindowToken(), 0);
175+
databaseRef.addValueEventListener(new ValueEventListener() {
176+
@Override
177+
public void onDataChange(DataSnapshot dataSnapshot) {
178+
resetPasswordUsername(dataSnapshot);
179+
180+
}
181+
182+
@Override
183+
public void onCancelled(DatabaseError databaseError) {
184+
185+
}
186+
});
187+
188+
}
189+
190+
}
191+
192+
@Override
193+
public void onCancelled(DatabaseError databaseError) {
194+
195+
}
196+
});
197+
198+
}
199+
} else {
200+
Toasty.error(HelpActivity.this, getString(R.string.errorConnection), Toast.LENGTH_SHORT, true).show();
201+
}
202+
203+
}
204+
205+
}
206+
207+
/**
208+
* Controllo connessione internet
209+
*/
210+
public boolean isOnline() {
211+
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
212+
213+
return cm.getActiveNetworkInfo() != null && cm.getActiveNetworkInfo().isConnectedOrConnecting();
214+
}
215+
216+
private void resetPasswordUsername(DataSnapshot dataSnapshot) {
217+
for (final DataSnapshot ds : dataSnapshot.getChildren()) {
218+
final DatabaseInformation uInfo = new DatabaseInformation();
219+
220+
final Query query = databaseRef.child("users").orderByChild("username")
221+
.equalTo(email_field.getText().toString().toLowerCase());
222+
223+
query.addListenerForSingleValueEvent(new ValueEventListener() {
224+
@Override
225+
public void onDataChange(DataSnapshot dataSnapshot) {
226+
227+
String username = dataSnapshot.toString().split("=")[2].replace(" {", "");
228+
229+
uInfo.setEmail((ds.child(username).getValue(DatabaseInformation.class).getEmail()));
230+
resetPasswordEmail(uInfo.getEmail());
231+
232+
}
233+
234+
@Override
235+
public void onCancelled(DatabaseError databaseError) {
236+
237+
}
238+
});
239+
240+
}
241+
242+
}
243+
244+
/**
245+
* Controllo se il campo è una email
246+
*/
247+
public static boolean isEmail(String email) {
248+
String expression = "^[\\w\\.]+@([\\w]+\\.)+[A-Z]{2,7}$";
249+
CharSequence inputString = email;
250+
Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE);
251+
Matcher matcher = pattern.matcher(inputString);
252+
if (matcher.matches()) {
253+
return true;
254+
} else {
255+
return false;
256+
}
257+
}
258+
259+
private void resetPasswordEmail(final String email) {
260+
auth.sendPasswordResetEmail(email).addOnCompleteListener(this, new OnCompleteListener<Void>() {
261+
@Override
262+
public void onComplete(@NonNull Task<Void> task) {
263+
if (task.isSuccessful()) {
264+
final ProgressBar spinner = (ProgressBar) findViewById(R.id.progressBar1);
265+
spinner.setVisibility(View.GONE);
266+
spinner.setVisibility(View.VISIBLE);
267+
reset_button.setText("");
268+
Intent intent = new Intent(HelpActivity.this, LoginActivity.class);
269+
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
270+
startActivity(intent);
271+
Toasty.info(HelpActivity.this, getString(R.string.toastChangePassword), Toast.LENGTH_LONG).show();
272+
273+
}
274+
275+
}
276+
});
277+
}
278+
279+
public void disableField() {
280+
email_field.setEnabled(false);
281+
reset_button.setEnabled(false);
282+
}
283+
284+
public void enableField() {
285+
reset_button.setBackgroundDrawable(getDrawable(R.drawable.button_disabled_border));
286+
reset_button.setTextColor(getColor(R.color.colorPrimary));
287+
email_field.setEnabled(true);
288+
reset_button.setEnabled(true);
289+
}
290+
}

0 commit comments

Comments
 (0)