From 42747e6a9e69d1acb2d0577f05884b6d361ad221 Mon Sep 17 00:00:00 2001 From: Georg Reisinger <43533139+GeorgReisinger@users.noreply.github.com> Date: Sun, 24 Feb 2019 04:32:52 +0100 Subject: [PATCH] =?UTF-8?q?Push=20wird=20bei=20jeder=20=C3=A4nderung=20ges?= =?UTF-8?q?chickt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Push wird geschickt bei: Item ändern, erstellen, löschen, erledigen Gruppe ändern, erstellen, löschen Shoppingliste bearbeiten, sharing aufheben --- .../smartshopper/activitys/Dash.java | 39 ++++++++++++---- .../activitys/ItemListActivity.java | 37 +++++++++++++++ .../smartshopper/activitys/LoginActivity.java | 8 +++- .../activitys/ShoppinglistDetails.java | 26 +++++++++++ .../smartshopper/db/Database.java | 46 ++++++++++++++++++- .../messaging/MyFirebaseSender.java | 33 +++++++------ app/src/main/res/values/strings.xml | 3 ++ 7 files changed, 164 insertions(+), 28 deletions(-) diff --git a/app/src/main/java/at/smartshopper/smartshopper/activitys/Dash.java b/app/src/main/java/at/smartshopper/smartshopper/activitys/Dash.java index ff2afed..ca43225 100644 --- a/app/src/main/java/at/smartshopper/smartshopper/activitys/Dash.java +++ b/app/src/main/java/at/smartshopper/smartshopper/activitys/Dash.java @@ -292,7 +292,7 @@ public class Dash extends AppCompatActivity implements ShoppinglistAdapter.OnIte addFertig.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - + String pushEndString; if (fromDB) { try { db.editShoppinglist(sl_idString, name.getText().toString(), description.getText().toString(), color); @@ -304,6 +304,7 @@ public class Dash extends AppCompatActivity implements ShoppinglistAdapter.OnIte } catch (JSONException e) { e.printStackTrace(); } + pushEndString = " wurde geändert!"; } else { try { db.addShoppinglist(name.getText().toString(), description.getText().toString(), username, color); @@ -315,8 +316,18 @@ public class Dash extends AppCompatActivity implements ShoppinglistAdapter.OnIte } catch (JSONException e) { e.printStackTrace(); } + pushEndString = " wurde erstellt!"; } + try { + MyFirebaseSender myFirebaseSender = new MyFirebaseSender(db.getMembers(sl_idString)); + myFirebaseSender.addMember(db.getAdmin(sl_idString)); + myFirebaseSender.sendMessage(name.getText().toString() + pushEndString +" Von " + db.getUser(username).getName(),name.getText().toString() + pushEndString); + } catch (SQLException e) { + e.printStackTrace(); + } catch (JSONException e) { + e.printStackTrace(); + } } }); @@ -690,7 +701,7 @@ public class Dash extends AppCompatActivity implements ShoppinglistAdapter.OnIte } @Override - public void onShareClick(String sl_id, View v) { + public void onShareClick(final String sl_id, View v) { final String link = getInviteLink(sl_id); final LayoutInflater inflater = (LayoutInflater) getApplicationContext().getSystemService(LAYOUT_INFLATER_SERVICE); @@ -723,6 +734,23 @@ public class Dash extends AppCompatActivity implements ShoppinglistAdapter.OnIte delShare.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { + Shoppinglist spl = null; + try { + spl = db.getShoppinglist(db.getSlIdFromInvite(finalLink)); + } catch (SQLException e) { + e.printStackTrace(); + } catch (JSONException e) { + e.printStackTrace(); + } + try { + MyFirebaseSender myFirebaseSender = new MyFirebaseSender(db.getMembers(sl_id)); + myFirebaseSender.addMember(db.getAdmin(sl_id)); + myFirebaseSender.sendMessage("Das Sharing von " + spl.getname() + " wurde von " + db.getUser(FirebaseAuth.getInstance().getCurrentUser().getUid()).getName() + " aufgehoben!",spl.getname() + " sharing wurde geändert!"); + } catch (SQLException e) { + e.printStackTrace(); + } catch (JSONException e) { + e.printStackTrace(); + } try { db.deleteInvite(finalLink); @@ -784,13 +812,6 @@ public class Dash extends AppCompatActivity implements ShoppinglistAdapter.OnIte @Override public void sharedOnChangeItemClick(String sl_id, View v) { onChangeItemClickContainer(sl_id, v); - try { - new MyFirebaseSender(db.getMembers(sl_id)).sendMessage("Eine ihrer Shoppinglisten wurde geändert", "MY_ACTION"); - } catch (SQLException e) { - e.printStackTrace(); - } catch (JSONException e) { - e.printStackTrace(); - } } @Override diff --git a/app/src/main/java/at/smartshopper/smartshopper/activitys/ItemListActivity.java b/app/src/main/java/at/smartshopper/smartshopper/activitys/ItemListActivity.java index fc7e05b..e6fabec 100644 --- a/app/src/main/java/at/smartshopper/smartshopper/activitys/ItemListActivity.java +++ b/app/src/main/java/at/smartshopper/smartshopper/activitys/ItemListActivity.java @@ -21,6 +21,7 @@ import android.widget.ImageButton; import android.widget.PopupWindow; import android.widget.TextView; +import com.google.firebase.auth.FirebaseAuth; import com.squareup.picasso.Picasso; import org.json.JSONException; @@ -31,6 +32,7 @@ import java.util.List; import at.smartshopper.smartshopper.R; import at.smartshopper.smartshopper.customViews.SpaceItemDecoration; import at.smartshopper.smartshopper.db.Database; +import at.smartshopper.smartshopper.messaging.MyFirebaseSender; import at.smartshopper.smartshopper.shoppinglist.details.item.Item; import at.smartshopper.smartshopper.shoppinglist.details.item.ItemAdapter; @@ -145,7 +147,9 @@ public class ItemListActivity extends Activity implements ItemAdapter.OnItemEdit @Override public void onItemDelClicked(String item_id, String group_id, String sl_id) { + Item item = null; try { + item = db.getItem(item_id); swipeRefreshLayoutItem.setRefreshing(true); db.deleteItem(item_id, group_id, sl_id); showItems(group_id, sl_id); @@ -155,6 +159,15 @@ public class ItemListActivity extends Activity implements ItemAdapter.OnItemEdit } catch (JSONException e) { e.printStackTrace(); } + try { + MyFirebaseSender myFirebaseSender = new MyFirebaseSender(db.getMembers(sl_id)); + myFirebaseSender.addMember(db.getAdmin(sl_id)); + myFirebaseSender.sendMessage(item.getName() + " wurde von " + db.getUser(FirebaseAuth.getInstance().getCurrentUser().getUid()).getName() + " gelöscht!","Item: " + item.getName() + " wurde gelöscht!"); + } catch (SQLException e) { + e.printStackTrace(); + } catch (JSONException e) { + e.printStackTrace(); + } } @Override @@ -226,6 +239,7 @@ public class ItemListActivity extends Activity implements ItemAdapter.OnItemEdit finish.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { + String pushEndSting; if (fromDB) { try { db.editItem(item_id, group_id, sl_id, name.getText().toString(), Integer.parseInt(count.getText().toString())); @@ -237,6 +251,7 @@ public class ItemListActivity extends Activity implements ItemAdapter.OnItemEdit } catch (JSONException e) { e.printStackTrace(); } + pushEndSting = " wurde geändert!"; } else { try { db.addItem(group_id, sl_id, name.getText().toString(), Integer.parseInt(count.getText().toString())); @@ -248,6 +263,16 @@ public class ItemListActivity extends Activity implements ItemAdapter.OnItemEdit } catch (JSONException e) { e.printStackTrace(); } + pushEndSting = " wurde erstellt!"; + } + try { + MyFirebaseSender myFirebaseSender = new MyFirebaseSender(db.getMembers(sl_id)); + myFirebaseSender.addMember(db.getAdmin(sl_id)); + myFirebaseSender.sendMessage(name.getText().toString() + pushEndSting + " Von: " + db.getUser(FirebaseAuth.getInstance().getCurrentUser().getUid()).getName(),"Item: " + name.getText().toString() + pushEndSting); + } catch (SQLException e) { + e.printStackTrace(); + } catch (JSONException e) { + e.printStackTrace(); } } }); @@ -279,7 +304,9 @@ public class ItemListActivity extends Activity implements ItemAdapter.OnItemEdit @Override public void onItemCheckClicked(String uid, String name, String itemId, String groupId, String sl_id, int count) { + Item item = null; try { + item = db.getItem(itemId); swipeRefreshLayoutItem.setRefreshing(true); db.setDoneItem(uid, name, itemId, groupId, sl_id, count); showItems(group_id, sl_id); @@ -289,5 +316,15 @@ public class ItemListActivity extends Activity implements ItemAdapter.OnItemEdit } catch (JSONException e) { e.printStackTrace(); } + + try { + MyFirebaseSender myFirebaseSender = new MyFirebaseSender(db.getMembers(sl_id)); + myFirebaseSender.addMember(db.getAdmin(sl_id)); + myFirebaseSender.sendMessage(item.getName() + " wurde von " + db.getUser(FirebaseAuth.getInstance().getCurrentUser().getUid()).getName() + " gekauft!","Item Erledigt: " + item.getName() + "!"); + } catch (SQLException e) { + e.printStackTrace(); + } catch (JSONException e) { + e.printStackTrace(); + } } } diff --git a/app/src/main/java/at/smartshopper/smartshopper/activitys/LoginActivity.java b/app/src/main/java/at/smartshopper/smartshopper/activitys/LoginActivity.java index 0f628a8..dbd2d67 100644 --- a/app/src/main/java/at/smartshopper/smartshopper/activitys/LoginActivity.java +++ b/app/src/main/java/at/smartshopper/smartshopper/activitys/LoginActivity.java @@ -86,8 +86,12 @@ public class LoginActivity extends AppCompatActivity { String uid = user.getUid(); String name = user.getDisplayName(); String email = user.getEmail(); - String picture = user.getPhotoUrl().toString(); - + String picture = " "; + try { + picture = user.getPhotoUrl().toString(); + }catch (Exception e){ + e.printStackTrace(); + } // Get new Instance ID token String token = task.getResult().getToken(); diff --git a/app/src/main/java/at/smartshopper/smartshopper/activitys/ShoppinglistDetails.java b/app/src/main/java/at/smartshopper/smartshopper/activitys/ShoppinglistDetails.java index ee66726..7a41cee 100644 --- a/app/src/main/java/at/smartshopper/smartshopper/activitys/ShoppinglistDetails.java +++ b/app/src/main/java/at/smartshopper/smartshopper/activitys/ShoppinglistDetails.java @@ -32,6 +32,7 @@ import java.util.List; import at.smartshopper.smartshopper.R; import at.smartshopper.smartshopper.customViews.SpaceItemDecoration; import at.smartshopper.smartshopper.db.Database; +import at.smartshopper.smartshopper.messaging.MyFirebaseSender; import at.smartshopper.smartshopper.shoppinglist.Shoppinglist; import at.smartshopper.smartshopper.shoppinglist.details.Details; import at.smartshopper.smartshopper.shoppinglist.details.DetailsAdapter; @@ -185,6 +186,7 @@ public class ShoppinglistDetails extends Activity implements DetailsAdapter.OnGr finish.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { + String pushEndString; if (fromDB) { try { db.editGroup(sl_id, groupid, name.getText().toString(), colorString, ""); @@ -196,17 +198,30 @@ public class ShoppinglistDetails extends Activity implements DetailsAdapter.OnGr } catch (JSONException e) { e.printStackTrace(); } + pushEndString = " wurde geändert!"; } else { try { db.addGroup(sl_id, name.getText().toString(), colorString, ""); showDetails(sl_id); popupWindow.dismiss(); colorString = "ffffff"; + } catch (SQLException e) { e.printStackTrace(); } catch (JSONException e) { e.printStackTrace(); } + pushEndString = " wurde erstellt!"; + } + + try { + MyFirebaseSender myFirebaseSender = new MyFirebaseSender(db.getMembers(sl_id)); + myFirebaseSender.addMember(db.getAdmin(sl_id)); + myFirebaseSender.sendMessage(name.getText().toString() + pushEndString + " Von: " + db.getUser(username).getName(),"Gruppe: " + name.getText().toString() + pushEndString); + } catch (SQLException e) { + e.printStackTrace(); + } catch (JSONException e) { + e.printStackTrace(); } } }); @@ -314,7 +329,9 @@ public class ShoppinglistDetails extends Activity implements DetailsAdapter.OnGr @Override public void onGroupDeleteClick(String sl_id, String group_id, View v) { + Group group = null; try { + group = db.getGroup(group_id, sl_id); detailsSwiperefresh.setRefreshing(true); db.deleteGroup(group_id, sl_id); showDetails(sl_id); @@ -324,6 +341,15 @@ public class ShoppinglistDetails extends Activity implements DetailsAdapter.OnGr } catch (JSONException e) { e.printStackTrace(); } + try { + MyFirebaseSender myFirebaseSender = new MyFirebaseSender(db.getMembers(sl_id)); + myFirebaseSender.addMember(db.getAdmin(sl_id)); + myFirebaseSender.sendMessage(group.getGroupName() + " wurde von " + db.getUser(FirebaseAuth.getInstance().getCurrentUser().getUid()).getName() + " gelöscht!","Gruppe: " + group.getGroupName() + " wurde gelöscht!"); + } catch (SQLException e) { + e.printStackTrace(); + } catch (JSONException e) { + e.printStackTrace(); + } } @Override diff --git a/app/src/main/java/at/smartshopper/smartshopper/db/Database.java b/app/src/main/java/at/smartshopper/smartshopper/db/Database.java index a032375..d65b702 100644 --- a/app/src/main/java/at/smartshopper/smartshopper/db/Database.java +++ b/app/src/main/java/at/smartshopper/smartshopper/db/Database.java @@ -3,6 +3,7 @@ package at.smartshopper.smartshopper.db; import android.os.StrictMode; import com.google.firebase.auth.FirebaseAuth; +import com.google.firebase.messaging.FirebaseMessaging; import org.json.JSONException; import org.json.JSONObject; @@ -92,7 +93,48 @@ public class Database { public Member getAdmin(String sl_id) throws SQLException, JSONException { String SQL = "SELECT row_to_json(\"User\") as obj FROM \"User\" JOIN \"Shoppinglist_admin\" USING (username) WHERE sl_id = ?"; JSONObject jsonObject = new JSONObject(executeQuery(SQL, sl_id)); - return new Member(jsonObject.getString("username"), jsonObject.getString("message_id"), jsonObject.getString("name"), jsonObject.getString("picture"), jsonObject.getString("email")); + return generateNewSecureMember(jsonObject.getString("username"), jsonObject.getString("message_id"), jsonObject.getString("name"), jsonObject.getString("picture"), jsonObject.getString("email")); + } + + public Member getUser(String uid) throws SQLException, JSONException { + String SQL = "SELECT row_to_json(\"User\") FROM \"User\" WHERE username = ?"; + JSONObject jsonObject = new JSONObject(executeQuery(SQL, uid)); + return generateNewSecureMember(jsonObject.getString("username"), jsonObject.getString("message_id"), jsonObject.getString("name"), jsonObject.getString("picture"), jsonObject.getString("email")); + } + + private Member generateNewSecureMember(String username, String message_id, String name, String picture, String email) throws SQLException { + String newusername = "", newmessage_id = "", newname = "", newpicture = "", newemail = ""; + if(username.isEmpty()){ + newusername = "EMPTY"; + }else { + newusername = username; + } + if(message_id.isEmpty()){ + newmessage_id = "EMPTY"; + }else { + newmessage_id = message_id; + } + if(name.isEmpty()){ + newname = "EMPTY"; + }else { + newname = name; + } + if(picture.isEmpty() || picture.equals(" ")){ + newpicture = "https://i0.wp.com/www.windowspower.de/wp-content/uploads/2015/10/profilbilde-windows-10.jpg?fit=610%2C340&ssl=1"; + }else { + newpicture = picture; + } + if(email.isEmpty()){ + newemail = "EMPTY"; + }else { + newemail = email; + } + if(username.equals(newusername)) { + if (!name.equals(newname) || !message_id.equals(newmessage_id) || !picture.equals(newpicture) || !email.equals(newemail)) { + updateUser(username, newmessage_id, newname, newpicture, newemail); + } + } + return new Member(newusername, newmessage_id, newname, newpicture, newemail); } /** @@ -176,7 +218,7 @@ public class Database { * @throws SQLException * @throws JSONException */ - private String getSlIdFromInvite(String invitelink) throws SQLException, JSONException { + public String getSlIdFromInvite(String invitelink) throws SQLException, JSONException { String SQL = "Select sl_id from \"Shoppinglist\" WHERE invitelink = ?"; String returnSl_id = executeQuery(SQL, getinviteFromLink(invitelink)); return returnSl_id; diff --git a/app/src/main/java/at/smartshopper/smartshopper/messaging/MyFirebaseSender.java b/app/src/main/java/at/smartshopper/smartshopper/messaging/MyFirebaseSender.java index c4f058c..85f1c24 100644 --- a/app/src/main/java/at/smartshopper/smartshopper/messaging/MyFirebaseSender.java +++ b/app/src/main/java/at/smartshopper/smartshopper/messaging/MyFirebaseSender.java @@ -2,22 +2,14 @@ package at.smartshopper.smartshopper.messaging; import android.util.Log; -import com.google.firebase.messaging.FirebaseMessaging; -import com.google.firebase.messaging.RemoteMessage; - - import java.util.ArrayList; import java.util.List; -import at.smartshopper.smartshopper.R; import at.smartshopper.smartshopper.shoppinglist.Member; import cz.msebera.android.httpclient.HttpResponse; -import cz.msebera.android.httpclient.NameValuePair; import cz.msebera.android.httpclient.client.HttpClient; -import cz.msebera.android.httpclient.client.entity.UrlEncodedFormEntity; -import cz.msebera.android.httpclient.client.methods.HttpPost; +import cz.msebera.android.httpclient.client.methods.HttpGet; import cz.msebera.android.httpclient.impl.client.DefaultHttpClient; -import cz.msebera.android.httpclient.message.BasicNameValuePair; public class MyFirebaseSender { @@ -31,31 +23,42 @@ public class MyFirebaseSender { messageIds = tmp; } + public void addMember(Member member){ + if(!messageIds.contains(member.getMsid())){ + messageIds.add(member.getMsid()); + } + } + /** * Sendet die Firebase Messages zum server * * @param message Push Nachricht - * @param action Push action + * @param title Push title */ - public void sendMessage(String message, String action) { - FirebaseMessaging firebaseMessaging = FirebaseMessaging.getInstance(); + public void sendMessage(String message, String title) { + message = message.replace(" ", "%20"); + title = title.replace(" ", "%20"); + //FirebaseMessaging firebaseMessaging = FirebaseMessaging.getInstance(); for (int i = 0; messageIds.size() > i; i++) { try { + /* firebaseMessaging.send(new RemoteMessage.Builder(R.string.firebase_sender_id + "@fcm.googleapis.com/fcm/") .setMessageId(messageIds.get(i)) .addData("my_message", message) .addData("LoginActivity", action) .build()); + */ // Create a new HttpClient and Post Header HttpClient httpclient = new DefaultHttpClient(); - HttpPost httppost = new HttpPost("https://www.smartshopper.cf/push/" + messageIds.get(i)); + HttpGet httpGet = new HttpGet("https://www.smartshopper.cf/push/" + messageIds.get(i) + "/" + message + "/" + title); // Execute HTTP Post Request - HttpResponse response = httpclient.execute(httppost); - Log.d(R.string.StringTag + "", "Response Push Post" + response); + HttpResponse response = httpclient.execute(httpGet); + Log.d("SmartShopper", "Message ID: " + messageIds.get(i)); + Log.d("SmartShopper", "Response Push Post: " + response); } catch (Exception e) { e.printStackTrace(); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 46cd954..af69f81 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,4 +1,5 @@ + SmartShopper Dash ShoppinglistDetail @@ -6,4 +7,6 @@ ItemListActivity 221332577314 SmartShopper + +