Push wird bei jeder änderung geschickt

Push wird geschickt bei:
Item ändern, erstellen, löschen, erledigen
Gruppe ändern, erstellen, löschen
Shoppingliste bearbeiten, sharing aufheben
This commit is contained in:
Georg Reisinger 2019-02-24 04:32:52 +01:00
parent 4eda7a13b2
commit 42747e6a9e
7 changed files with 164 additions and 28 deletions

View File

@ -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

View File

@ -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();
}
}
}

View File

@ -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();

View File

@ -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

View File

@ -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;

View File

@ -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();

View File

@ -1,4 +1,5 @@
<resources>
<string name="app_name">SmartShopper</string>
<string name="title_activity_dash">Dash</string>
<string name="title_activity_shoppinglist_detail">ShoppinglistDetail</string>
@ -6,4 +7,6 @@
<string name="title_activity_item_list">ItemListActivity</string>
<string name="firebase_sender_id">221332577314</string>
<string name="StringTag">SmartShopper</string>
</resources>