From e6e395cc2569fe3073c091aabf69c0fb4fde4502 Mon Sep 17 00:00:00 2001 From: Mohamed Kamal El Shazly Date: Thu, 8 Feb 2018 18:37:28 +0200 Subject: [PATCH] Fix Bugs --- app/src/main/AndroidManifest.xml | 14 +++-- .../piazyapp/Activity/LoginActivity.java | 53 +++++++++--------- .../piazyapp/Activity/PostActivity.java | 1 + .../piazyapp/Activity/RegiserActivity.java | 8 ++- .../piazyapp/Adapters/CommentsAdapter.java | 4 ++ .../piazyapp/Adapters/CoursesAdapter.java | 5 ++ .../Adapters/NotificationsAdapter.java | 4 ++ .../piazyapp/Adapters/PostsAdapter.java | 4 ++ .../Adapters/ResourceFilesAdapter.java | 4 ++ .../Notifications/CommentNotifications.java | 2 +- .../piazyapp/Notifications/Notification.java | 10 ++-- .../Notifications/PostNotification.java | 2 +- app/src/main/res/drawable/arrow.jpeg | Bin 70107 -> 0 bytes .../res/drawable/{board.png => board.jpeg} | Bin .../main/res/menu/menu_course_settings.xml | 2 +- 15 files changed, 73 insertions(+), 40 deletions(-) delete mode 100644 app/src/main/res/drawable/arrow.jpeg rename app/src/main/res/drawable/{board.png => board.jpeg} (100%) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 99be5bd..e94cbbd 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -33,17 +33,23 @@ android:label="Home" /> - - + + - + \ No newline at end of file diff --git a/app/src/main/java/com/example/shazly/piazyapp/Activity/LoginActivity.java b/app/src/main/java/com/example/shazly/piazyapp/Activity/LoginActivity.java index 02afa68..ae08b7c 100644 --- a/app/src/main/java/com/example/shazly/piazyapp/Activity/LoginActivity.java +++ b/app/src/main/java/com/example/shazly/piazyapp/Activity/LoginActivity.java @@ -70,34 +70,37 @@ public void onClickk(View v) { Toast.LENGTH_SHORT).show(); return; } - else - mAuth.signInWithEmailAndPassword(email, password) - .addOnCompleteListener(this, new OnCompleteListener() { - @Override - public void onComplete(@NonNull Task task) { - if (task.isSuccessful()) { - FirebaseUser user = mAuth.getCurrentUser(); - UserManger userManger = new UserManger(); - try { - wait.setTitle("Please Wait"); - wait.setMessage("Loading..."); - wait.show(); - UserManger.currentUser= userManger.findCurrentUser(user.getUid().toString(), LoginActivity.this, new Intent(LoginActivity.this, HomeActivity.class), wait); - - - int g = 1; - } catch (InterruptedException e) { - e.printStackTrace(); + else { + wait.setTitle("Please Wait"); + wait.setMessage("Loading..."); + wait.show(); + mAuth.signInWithEmailAndPassword(email, password) + .addOnCompleteListener(this, new OnCompleteListener() { + @Override + public void onComplete(@NonNull Task task) { + if (task.isSuccessful()) { + FirebaseUser user = mAuth.getCurrentUser(); + UserManger userManger = new UserManger(); + try { + + UserManger.currentUser = userManger.findCurrentUser(user.getUid().toString(), LoginActivity.this, new Intent(LoginActivity.this, HomeActivity.class), wait); + + + int g = 1; + } catch (InterruptedException e) { + e.printStackTrace(); + } + + } else { + Toast.makeText(LoginActivity.this, "Authentication failed.", + Toast.LENGTH_SHORT).show(); + wait.dismiss(); } - } else { - Toast.makeText(LoginActivity.this, "Authentication failed.", - Toast.LENGTH_SHORT).show(); - } - - } - }); + } + }); + } } public void display() { diff --git a/app/src/main/java/com/example/shazly/piazyapp/Activity/PostActivity.java b/app/src/main/java/com/example/shazly/piazyapp/Activity/PostActivity.java index d20763c..1344c2b 100644 --- a/app/src/main/java/com/example/shazly/piazyapp/Activity/PostActivity.java +++ b/app/src/main/java/com/example/shazly/piazyapp/Activity/PostActivity.java @@ -104,6 +104,7 @@ public void findUsers(final Comment comment, final ArrayAdapter adapter) { FirebaseDatabase mFirebaseDatabase; mFirebaseDatabase = FirebaseDatabase.getInstance(); + UserManger.currentPost.getFollowersID().add(UserManger.currentUser.getUserId()); final DatabaseReference myRef = mFirebaseDatabase.getReference().child("users"); myRef.addValueEventListener(new ValueEventListener() { @Override diff --git a/app/src/main/java/com/example/shazly/piazyapp/Activity/RegiserActivity.java b/app/src/main/java/com/example/shazly/piazyapp/Activity/RegiserActivity.java index cf253a1..13b8101 100644 --- a/app/src/main/java/com/example/shazly/piazyapp/Activity/RegiserActivity.java +++ b/app/src/main/java/com/example/shazly/piazyapp/Activity/RegiserActivity.java @@ -92,6 +92,9 @@ public void onClickk(View v) { Toast.LENGTH_SHORT).show(); return; } + final ProgressDialog progressDialog = new ProgressDialog(RegiserActivity.this); + progressDialog.setTitle("Please Wait..."); + progressDialog.show(); mAuth.createUserWithEmailAndPassword(mail, password) .addOnCompleteListener(this, new OnCompleteListener() { @Override @@ -99,9 +102,7 @@ public void onComplete(@NonNull Task task) { if (task.isSuccessful()) { // Sign in success, update UI with the signed-in user's information if(filepath != null) { - final ProgressDialog progressDialog = new ProgressDialog(RegiserActivity.this); - progressDialog.setTitle("Please Wait..."); - progressDialog.show(); + StorageReference rf = storageReference.child("images/"+mAuth.getCurrentUser().getUid()); rf.putFile(filepath).addOnSuccessListener(new OnSuccessListener() { @Override @@ -134,6 +135,7 @@ public void onProgress(UploadTask.TaskSnapshot taskSnapshot) { // If sign in fails, display a message to the user. Toast.makeText(RegiserActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show(); + progressDialog.dismiss(); } } diff --git a/app/src/main/java/com/example/shazly/piazyapp/Adapters/CommentsAdapter.java b/app/src/main/java/com/example/shazly/piazyapp/Adapters/CommentsAdapter.java index 6b9fb87..d77a1ec 100644 --- a/app/src/main/java/com/example/shazly/piazyapp/Adapters/CommentsAdapter.java +++ b/app/src/main/java/com/example/shazly/piazyapp/Adapters/CommentsAdapter.java @@ -30,6 +30,10 @@ public CommentsAdapter(Context c, List comments){ super(c,0,comments); context = c; } + public CommentsAdapter(){ + + super(null,0,0); + } @Override public View getView(int position, View convertView, ViewGroup parent) { // Check if the existing view is being reused, otherwise inflate the view diff --git a/app/src/main/java/com/example/shazly/piazyapp/Adapters/CoursesAdapter.java b/app/src/main/java/com/example/shazly/piazyapp/Adapters/CoursesAdapter.java index a35c147..efe51e4 100644 --- a/app/src/main/java/com/example/shazly/piazyapp/Adapters/CoursesAdapter.java +++ b/app/src/main/java/com/example/shazly/piazyapp/Adapters/CoursesAdapter.java @@ -20,6 +20,11 @@ public CoursesAdapter(Context c, ArrayList courses){ super(c,0,courses); } + public CoursesAdapter(){ + + super(null,0,0); + } + @Override public View getView(int position, View convertView, ViewGroup parent) { // Check if the existing view is being reused, otherwise inflate the view diff --git a/app/src/main/java/com/example/shazly/piazyapp/Adapters/NotificationsAdapter.java b/app/src/main/java/com/example/shazly/piazyapp/Adapters/NotificationsAdapter.java index e12fc64..a2c62a3 100644 --- a/app/src/main/java/com/example/shazly/piazyapp/Adapters/NotificationsAdapter.java +++ b/app/src/main/java/com/example/shazly/piazyapp/Adapters/NotificationsAdapter.java @@ -25,6 +25,10 @@ public NotificationsAdapter(Context c, List notifications){ super(c,0,notifications); } + public NotificationsAdapter(){ + + super(null,0,0); + } @Override public View getView(int position, View convertView, ViewGroup parent) { // Check if the existing view is being reused, otherwise inflate the view diff --git a/app/src/main/java/com/example/shazly/piazyapp/Adapters/PostsAdapter.java b/app/src/main/java/com/example/shazly/piazyapp/Adapters/PostsAdapter.java index a2a2938..ff76321 100644 --- a/app/src/main/java/com/example/shazly/piazyapp/Adapters/PostsAdapter.java +++ b/app/src/main/java/com/example/shazly/piazyapp/Adapters/PostsAdapter.java @@ -20,6 +20,10 @@ public PostsAdapter(Context c, List posts){ super(c,0,posts); } + public PostsAdapter(){ + + super(null,0,0); + } @Override public View getView(int position, View convertView, ViewGroup parent) { diff --git a/app/src/main/java/com/example/shazly/piazyapp/Adapters/ResourceFilesAdapter.java b/app/src/main/java/com/example/shazly/piazyapp/Adapters/ResourceFilesAdapter.java index e71ca42..3b9ed20 100644 --- a/app/src/main/java/com/example/shazly/piazyapp/Adapters/ResourceFilesAdapter.java +++ b/app/src/main/java/com/example/shazly/piazyapp/Adapters/ResourceFilesAdapter.java @@ -23,6 +23,10 @@ public ResourceFilesAdapter(Context c, List files) { super(c, 0, files); } + public ResourceFilesAdapter(){ + + super(null,0,0); + } @Override public View getView(int position, View convertView, ViewGroup parent) { diff --git a/app/src/main/java/com/example/shazly/piazyapp/Notifications/CommentNotifications.java b/app/src/main/java/com/example/shazly/piazyapp/Notifications/CommentNotifications.java index 608e5d7..2b44d27 100644 --- a/app/src/main/java/com/example/shazly/piazyapp/Notifications/CommentNotifications.java +++ b/app/src/main/java/com/example/shazly/piazyapp/Notifications/CommentNotifications.java @@ -12,7 +12,7 @@ public class CommentNotifications extends Notification { public CommentNotifications(String userName, Course course, String userId, Post post) { super(userName, course, userId); this.post = post; - if (isInstructor(this.user, this.course)) { + if (isInstructor(userId, course)) { content = ("Instructor " + userName + " commented in a post you follow in " + course.getName()); } else content = (userName + " commented in a post you follow in " + course.getName()); diff --git a/app/src/main/java/com/example/shazly/piazyapp/Notifications/Notification.java b/app/src/main/java/com/example/shazly/piazyapp/Notifications/Notification.java index a3abfbd..c48b742 100644 --- a/app/src/main/java/com/example/shazly/piazyapp/Notifications/Notification.java +++ b/app/src/main/java/com/example/shazly/piazyapp/Notifications/Notification.java @@ -9,7 +9,7 @@ */ public class Notification { - String user; + String userName; Course course; String content; String userId; @@ -23,8 +23,8 @@ public String getContent() { return content; } - public String getUser() { - return user; + public String getUserName() { + return userName; } public Course getCourse() { @@ -39,8 +39,8 @@ public Notification() { } - public Notification(String user, Course course, String userId) { - this.user = user; + public Notification(String userName, Course course, String userId) { + this.userName = userName; this.course = course; this.userId = userId; } diff --git a/app/src/main/java/com/example/shazly/piazyapp/Notifications/PostNotification.java b/app/src/main/java/com/example/shazly/piazyapp/Notifications/PostNotification.java index 99a406b..eff037d 100644 --- a/app/src/main/java/com/example/shazly/piazyapp/Notifications/PostNotification.java +++ b/app/src/main/java/com/example/shazly/piazyapp/Notifications/PostNotification.java @@ -12,7 +12,7 @@ public class PostNotification extends Notification { public PostNotification(String userName, String userId, Course course) { super(userName, course, userId); - if (isInstructor(this.user, this.course)) { + if (isInstructor(userId, course)) { content = ("Instructor " + userName + " posted in course " + course.getName()); } else content = (userName + " posted in course " + course.getName()); diff --git a/app/src/main/res/drawable/arrow.jpeg b/app/src/main/res/drawable/arrow.jpeg deleted file mode 100644 index bba078520c9d04615488b606dae652f68f460b78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70107 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