Email Login
This commit is contained in:
		@@ -1,4 +1,7 @@
 | 
			
		||||
const { query, nonQuery } = require("../db-config/postgresql-common");
 | 
			
		||||
const {
 | 
			
		||||
    query,
 | 
			
		||||
    nonQuery
 | 
			
		||||
} = require("../db-config/postgresql-common");
 | 
			
		||||
 | 
			
		||||
const stringSimilarity = require('string-similarity');
 | 
			
		||||
 | 
			
		||||
@@ -7,12 +10,10 @@ const stringSimilarity = require('string-similarity');
 | 
			
		||||
//Create User Info
 | 
			
		||||
 | 
			
		||||
async function updateUser(uid, mid, name, picture, email) {
 | 
			
		||||
    try {      
 | 
			
		||||
    try {
 | 
			
		||||
        await nonQuery('INSERT INTO "User" (username, message_id, name, picture, email) VALUES ($1, $2, $3, $4, $5);', [uid, mid, name, picture, email]);
 | 
			
		||||
        
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    catch (error) {
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
        console.error(error);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -22,10 +23,8 @@ async function getmessageids(sl_id) {
 | 
			
		||||
        let members = query('SELECT * FROM "Shoppinglist_member" WHERE sl_id = $1;', [sl_id]);
 | 
			
		||||
        let admin = query('SELECT * FROM "Shoppinglist_admin" WHERE sl_id = $1;', [sl_id]);
 | 
			
		||||
        return users_to_array(admin, members);
 | 
			
		||||
        
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    catch(error) {
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -35,13 +34,13 @@ async function getmessageids(sl_id) {
 | 
			
		||||
async function searchUsers(searchstring) {
 | 
			
		||||
    try {
 | 
			
		||||
        let users = await query('SELECT row_to_json("User") AS obj FROM "User";');
 | 
			
		||||
        return users.filter(function(obj) {return obj.name.toUpperCase().includes(searchstring.toUpperCase())});
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    catch(error) {
 | 
			
		||||
        return users.filter(function (obj) {
 | 
			
		||||
            return obj.name.toUpperCase().includes(searchstring.toUpperCase())
 | 
			
		||||
        });
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
        console.error(error);
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -49,14 +48,12 @@ async function searchUsers(searchstring) {
 | 
			
		||||
//SELECT own shopping lists
 | 
			
		||||
async function getShoppinglistsAdmin(username) {
 | 
			
		||||
    try {
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        let result = await query('SELECT row_to_json("Shoppinglist") AS obj FROM "Shoppinglist" JOIN "Shoppinglist_admin" USING (sl_id) WHERE \
 | 
			
		||||
        username = $1', [username]);
 | 
			
		||||
 | 
			
		||||
        return result;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    catch (error) {
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
        console.error(error);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -67,9 +64,7 @@ async function getShoppinglistsByLink(link) {
 | 
			
		||||
        console.log("PPPPP LIIINK:", link)
 | 
			
		||||
        let result = await query('SELECT row_to_json("Shoppinglist") AS obj FROM "Shoppinglist" WHERE invitelink = $1', [link]);
 | 
			
		||||
        return result;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    catch (error) {
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
        console.error(error);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -81,9 +76,7 @@ async function getShoppinglistsShared(username) {
 | 
			
		||||
        let result = await query('SELECT row_to_json("Shoppinglist") AS obj FROM "Shoppinglist" JOIN "Shoppinglist_member" USING (sl_id) WHERE username = $1;', [username]);
 | 
			
		||||
        console.log(result);
 | 
			
		||||
        return result;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    catch (error) {
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
        console.error(error);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -100,27 +93,21 @@ async function newShoppinglist(name, description, username, color) {
 | 
			
		||||
 | 
			
		||||
    try {
 | 
			
		||||
        await nonQuery('INSERT INTO "User" (username) VALUES ($1);', [username]);
 | 
			
		||||
    } 
 | 
			
		||||
    
 | 
			
		||||
    catch (error) {
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
        console.error(error);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    //insert shoppinglist
 | 
			
		||||
    try {
 | 
			
		||||
        await nonQuery('INSERT INTO "Shoppinglist" (sl_id, name, description, color) VALUES ($1, $2, $3, $4);', [sl_id, name, description, color]);
 | 
			
		||||
    } 
 | 
			
		||||
    
 | 
			
		||||
    catch (error) {
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
        console.error(error);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    //insert admin
 | 
			
		||||
    try {
 | 
			
		||||
        await nonQuery('INSERT INTO "Shoppinglist_admin" (username, sl_id) VALUES ($1, $2);', [username, sl_id]);
 | 
			
		||||
    }  
 | 
			
		||||
    
 | 
			
		||||
    catch (error) {
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
        console.error(error);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -131,21 +118,19 @@ async function newShoppinglist(name, description, username, color) {
 | 
			
		||||
async function editShoppinglist(sl_id, newname, newdescription, newcolor) {
 | 
			
		||||
    try {
 | 
			
		||||
        let shoppinglist = await query('SELECT row_to_json("Shoppinglist") AS obj FROM "Shoppinglist" WHERE sl_id = $1;', [sl_id]);
 | 
			
		||||
        
 | 
			
		||||
        if(shoppinglist.name != newname && newname != undefined) {
 | 
			
		||||
 | 
			
		||||
        if (shoppinglist.name != newname && newname != undefined) {
 | 
			
		||||
            await nonQuery('UPDATE "Shoppinglist" SET name = $1 WHERE sl_id = $2;', [newname, sl_id]);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if(shoppinglist.description != newdescription && newdescription != undefined) {
 | 
			
		||||
        if (shoppinglist.description != newdescription && newdescription != undefined) {
 | 
			
		||||
            await nonQuery('UPDATE "Shoppinglist" SET description = $1 WHERE sl_id = $2;', [newdescription, sl_id]);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if(shoppinglist.color != newcolor && newcolor != undefined) {
 | 
			
		||||
        if (shoppinglist.color != newcolor && newcolor != undefined) {
 | 
			
		||||
            await nonQuery('UPDATE "Shoppinglist" SET color = $1 WHERE sl_id = $2;', [newcolor, sl_id]);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    catch (error) {
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
        console.error(error);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -173,9 +158,7 @@ async function displayShoppinglist(sl_id) {
 | 
			
		||||
        let admin = await query('SELECT row_to_json("User") as obj FROM "User" JOIN "Shoppinglist_admin" USING (username) WHERE sl_id = $1', [sl_id]);
 | 
			
		||||
 | 
			
		||||
        return items_in_groups(groups, items, sl_id, admin[0].username, admin[0].message_id, members, shoppinglist[0].name, shoppinglist[0].description);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    catch (error) {
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
        console.error(error);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -188,9 +171,7 @@ async function deleteShoppinglist(sl_id) {
 | 
			
		||||
        await nonQuery('DELETE FROM "Shoppinglist_admin" WHERE sl_id = $1', [sl_id]);
 | 
			
		||||
        await nonQuery('DELETE FROM "Shoppinglist_member" WHERE sl_id = $1', [sl_id]);
 | 
			
		||||
        await nonQuery('DELETE FROM "Shoppinglist" WHERE sl_id = $1', [sl_id]);
 | 
			
		||||
    } 
 | 
			
		||||
    
 | 
			
		||||
    catch (error) {
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
        console.error(error);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -201,9 +182,7 @@ async function addGroup(sl_id, name, color, hidden) {
 | 
			
		||||
    try {
 | 
			
		||||
        let grid = generate_group_id();
 | 
			
		||||
        await nonQuery('INSERT INTO "Group" (group_id, sl_id, name, color, hidden) VALUES ($1, $2, $3, $4, $5);', [grid, sl_id, name, color, hidden]);
 | 
			
		||||
    } 
 | 
			
		||||
    
 | 
			
		||||
    catch (error) {
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
        console.error(error);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -214,9 +193,7 @@ async function addItem(group_id, sl_id, name, count) {
 | 
			
		||||
    try {
 | 
			
		||||
        let itid = generate_item_id();
 | 
			
		||||
        await nonQuery('INSERT INTO "Item" VALUES ($1, $2, $3, $4, $5);', [itid, group_id, sl_id, name, count]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    catch (error) {
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
        console.error(error);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -224,23 +201,21 @@ async function addItem(group_id, sl_id, name, count) {
 | 
			
		||||
//Edit Group
 | 
			
		||||
async function editGroup(sl_id, group_id, name, color, hidden) {
 | 
			
		||||
    try {
 | 
			
		||||
        let group  = await query('SELECT row_to_json("Group") AS obj FROM "Group" WHERE group_id = $1 AND sl_id = $2', [sl_id, group_id]);
 | 
			
		||||
        let group = await query('SELECT row_to_json("Group") AS obj FROM "Group" WHERE group_id = $1 AND sl_id = $2', [sl_id, group_id]);
 | 
			
		||||
 | 
			
		||||
        if(group.name != name && name != undefined) {
 | 
			
		||||
        if (group.name != name && name != undefined) {
 | 
			
		||||
            await nonQuery('UPDATE "Group" SET name = $1 WHERE group_id = $2 AND sl_id = $3;', [name, group_id, sl_id]);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if(group.color != color && color != undefined) {
 | 
			
		||||
        if (group.color != color && color != undefined) {
 | 
			
		||||
            await nonQuery('UPDATE "Group" SET color = $1 WHERE group_id = $2 AND sl_id = $3;', [color, group_id, sl_id]);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if(group.hidden != hidden && hidden != undefined) {
 | 
			
		||||
        if (group.hidden != hidden && hidden != undefined) {
 | 
			
		||||
            await nonQuery('UPDATE "Group" SET hidden = $1 WHERE group_id = $2 AND sl_id = $3;', [hidden, group_id, sl_id]);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    catch (error) {
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
        console.error(error);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -252,16 +227,14 @@ async function editItem(sl_id, group_id, item_id, name, count) {
 | 
			
		||||
    try {
 | 
			
		||||
        let item = query('SELECT row_to_json("Item") FROM "Item" WHERE item_id = $1 AND group_id = $2 AND sl_id = $3', [item_id, group_id, sl_id]);
 | 
			
		||||
 | 
			
		||||
        if(item.name != name && name != undefined) {
 | 
			
		||||
        if (item.name != name && name != undefined) {
 | 
			
		||||
            await nonQuery('UPDATE "Item" SET name = $1 WHERE item_id = $2 AND group_id = $3 AND sl_id = $4', [name, item_id, group_id, sl_id]);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if(item.count != count && count != undefined) {
 | 
			
		||||
        if (item.count != count && count != undefined) {
 | 
			
		||||
            await nonQuery('UPDATE "Item" SET count = $1 WHERE item_id = $2 AND group_id = $3 AND sl_id = $4', [count, item_id, group_id, sl_id]);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    catch (error) {
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
        console.error(error);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -275,9 +248,7 @@ async function deleteGroup(group_id, sl_id) {
 | 
			
		||||
 | 
			
		||||
        //Leere Gruppe löschen
 | 
			
		||||
        nonQuery('DELETE FROM "Group" WHERE group_id = $1 AND sl_id = $2', [group_id, sl_id]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    catch (error) {
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
        console.error(error);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -287,9 +258,7 @@ async function deleteGroup(group_id, sl_id) {
 | 
			
		||||
async function deleteItem(item_id, group_id, sl_id) {
 | 
			
		||||
    try {
 | 
			
		||||
        nonQuery('DELETE FROM "Item" WHERE item_id = $1 AND group_id = $2 AND sl_id = $3;', [item_id, group_id, sl_id]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    catch(error) {
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
        console.error(error);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -304,35 +273,33 @@ async function moveDoneItems(uid, sl_id, billcontent) {
 | 
			
		||||
 | 
			
		||||
        var today = new Date();
 | 
			
		||||
        var dd = today.getDate();
 | 
			
		||||
        var mm = today.getMonth()+1;
 | 
			
		||||
        var mm = today.getMonth() + 1;
 | 
			
		||||
        var yyyy = today.getFullYear();
 | 
			
		||||
 | 
			
		||||
        if(dd<10) {
 | 
			
		||||
            dd = '0'+dd
 | 
			
		||||
        } 
 | 
			
		||||
        if (dd < 10) {
 | 
			
		||||
            dd = '0' + dd
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if(mm<10) {
 | 
			
		||||
            mm = '0'+mm
 | 
			
		||||
        } 
 | 
			
		||||
        if (mm < 10) {
 | 
			
		||||
            mm = '0' + mm
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        today = mm + '/' + dd + '/' + yyyy;
 | 
			
		||||
 | 
			
		||||
        for(let item of removeableItems) {
 | 
			
		||||
        for (let item of removeableItems) {
 | 
			
		||||
            await nonQuery('INSERT INTO "Done_Purchase" (purchased_item_id, username, name, date, count) VALUES($1,$2,$3,$4,$5);',
 | 
			
		||||
             [generate_item_id(), uid, item.name, today, 1]);
 | 
			
		||||
                [generate_item_id(), uid, item.name, today, 1]);
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        for(let item of removeableItems) {
 | 
			
		||||
 | 
			
		||||
        for (let item of removeableItems) {
 | 
			
		||||
            await nonQuery('DELETE FROM "Item" WHERE item_id = $1 AND group_id = $2 AND sl_id = $3;', [item.item_id, item.group_id, item.sl_id]);
 | 
			
		||||
            console.log(item);
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return "done"
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    catch(error) {
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
        console.error(error);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -343,9 +310,7 @@ async function getDonePurchases(uid) {
 | 
			
		||||
    try {
 | 
			
		||||
        let result = await query('SELECT row_to_json("Done_Purchase") AS obj FROM "Done_Purchase" WHERE username = $1;', [uid]);
 | 
			
		||||
        return result;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    catch(error) {
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
        console.error(error);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -366,9 +331,7 @@ async function verifyInvite(link, user_id) {
 | 
			
		||||
        let sl_id = result[0].sl_id;
 | 
			
		||||
        console.log("!!! SL ID: ", sl_id);
 | 
			
		||||
        await nonQuery('INSERT INTO "Shoppinglist_member" (username, sl_id) VALUES ($1, $2);', [user_id, sl_id]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    catch (error) {
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
        console.error(error);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -377,9 +340,7 @@ async function createInvite(sl_id) {
 | 
			
		||||
    try {
 | 
			
		||||
        let link = generateInviteLink();
 | 
			
		||||
        await nonQuery('UPDATE "Shoppinglist" SET invitelink = $1 WHERE sl_id = $2;', [link, sl_id]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    catch (error) {
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
        console.error(error);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -388,9 +349,7 @@ async function createInvite(sl_id) {
 | 
			
		||||
async function manInvite(sl_id, uid) {
 | 
			
		||||
    try {
 | 
			
		||||
        await nonQuery('INSERT INTO "Shoppinglist_member" (username, sl_id) VALUES ($1, $2);', [uid, sl_id]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    catch(error) {
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
        console.error(error);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -400,9 +359,7 @@ async function manInvite(sl_id, uid) {
 | 
			
		||||
async function removeMember(uid, sl_id) {
 | 
			
		||||
    try {
 | 
			
		||||
        await nonQuery('DELETE FROM "Shoppinglist_member" WHERE username = $1 AND sl_id = $2', [uid, sl_id]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    catch(error) {
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
        console.error(error);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -417,7 +374,7 @@ function generate_sl_id() {
 | 
			
		||||
    var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
 | 
			
		||||
    var output = "";
 | 
			
		||||
 | 
			
		||||
    for(let i = 0; i < 8; i++) {
 | 
			
		||||
    for (let i = 0; i < 8; i++) {
 | 
			
		||||
        output += possible.charAt(Math.floor(Math.random() * possible.length));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -429,7 +386,7 @@ function generate_group_id() {
 | 
			
		||||
    var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
 | 
			
		||||
    var output = "";
 | 
			
		||||
 | 
			
		||||
    for(let i = 0; i < 8; i++) {
 | 
			
		||||
    for (let i = 0; i < 8; i++) {
 | 
			
		||||
        output += possible.charAt(Math.floor(Math.random() * possible.length));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -441,7 +398,7 @@ function generate_item_id() {
 | 
			
		||||
    var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
 | 
			
		||||
    var output = "";
 | 
			
		||||
 | 
			
		||||
    for(let i = 0; i < 8; i++) {
 | 
			
		||||
    for (let i = 0; i < 8; i++) {
 | 
			
		||||
        output += possible.charAt(Math.floor(Math.random() * possible.length));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -462,17 +419,19 @@ function items_in_groups(groups, items, sl_id, admin_uid, admin_mid, members, na
 | 
			
		||||
        groups: []
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    for(let item of groups) {
 | 
			
		||||
    for (let item of groups) {
 | 
			
		||||
 | 
			
		||||
        result.groups.push({
 | 
			
		||||
            group_id: item.group_id,
 | 
			
		||||
            name: item.name,
 | 
			
		||||
            color: item.color,
 | 
			
		||||
            content: items.filter(function(obj) {return obj.group_id == item.group_id})
 | 
			
		||||
            content: items.filter(function (obj) {
 | 
			
		||||
                return obj.group_id == item.group_id
 | 
			
		||||
            })
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    for(let item of members) {
 | 
			
		||||
    for (let item of members) {
 | 
			
		||||
 | 
			
		||||
        result.members.push({
 | 
			
		||||
            uid: item.username,
 | 
			
		||||
@@ -488,7 +447,7 @@ function generateInviteLink() {
 | 
			
		||||
    var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
 | 
			
		||||
    var output = "";
 | 
			
		||||
 | 
			
		||||
    for(let i = 0; i < 50; i++) {
 | 
			
		||||
    for (let i = 0; i < 50; i++) {
 | 
			
		||||
        output += possible.charAt(Math.floor(Math.random() * possible.length));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -500,7 +459,7 @@ function users_to_array(admin, members) {
 | 
			
		||||
 | 
			
		||||
    users.push(admin.username);
 | 
			
		||||
 | 
			
		||||
    for(let item of members) {
 | 
			
		||||
    for (let item of members) {
 | 
			
		||||
        users.push(item.username);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -513,28 +472,18 @@ function compareData(listitems, doneitems) {
 | 
			
		||||
 | 
			
		||||
    let output = [];
 | 
			
		||||
 | 
			
		||||
    for(let item of listitems) {
 | 
			
		||||
        if(doneitems.includes(item.name)) {
 | 
			
		||||
    for (let item of listitems) {
 | 
			
		||||
        if (doneitems.includes(item.name)) {
 | 
			
		||||
            output.push(item);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        else if(doneitems.toUpperCase().includes(item.name.toUpperCase())) {
 | 
			
		||||
        } else if (doneitems.toUpperCase().includes(item.name.toUpperCase())) {
 | 
			
		||||
            output.push(item);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        else if(doneitems.toLowerCase().includes(item.name.toLowerCase())) {
 | 
			
		||||
        } else if (doneitems.toLowerCase().includes(item.name.toLowerCase())) {
 | 
			
		||||
            output.push(item);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        else if(probability(item.name, doneitems) > 0.6) {
 | 
			
		||||
        } else if (probability(item.name, doneitems) > 0.6) {
 | 
			
		||||
            output.push(item);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        else if(probability(item.name.toUpperCase(), doneitems.toUpperCase()) > 0.6) {
 | 
			
		||||
        } else if (probability(item.name.toUpperCase(), doneitems.toUpperCase()) > 0.6) {
 | 
			
		||||
            output.push(item);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        else if(probability(item.name.toLowerCase(), doneitems.toLowerCase()) > 0.6) {
 | 
			
		||||
        } else if (probability(item.name.toLowerCase(), doneitems.toLowerCase()) > 0.6) {
 | 
			
		||||
            output.push(item);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@@ -546,11 +495,11 @@ function probability(cur_item, data) {
 | 
			
		||||
 | 
			
		||||
    let best = 0;
 | 
			
		||||
 | 
			
		||||
    for(let i = 0; i < data.length; i++) {
 | 
			
		||||
    for (let i = 0; i < data.length; i++) {
 | 
			
		||||
 | 
			
		||||
        let prob = stringSimilarity.compareTwoStrings(cur_item, data.slice(i, i + cur_item.length));
 | 
			
		||||
 | 
			
		||||
        if(prob > best) {
 | 
			
		||||
        if (prob > best) {
 | 
			
		||||
            best = prob;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@@ -561,7 +510,25 @@ function probability(cur_item, data) {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
module.exports = {
 | 
			
		||||
    getShoppinglistsAdmin, getShoppinglistsShared, newShoppinglist, displayShoppinglist, deleteShoppinglist, addGroup,
 | 
			
		||||
    addItem, verifyInvite, createInvite, editShoppinglist, editGroup, editItem, deleteGroup, deleteItem, manInvite, updateUser,
 | 
			
		||||
    moveDoneItems, getDonePurchases, getShoppinglistsByLink, searchUsers, removeMember
 | 
			
		||||
}
 | 
			
		||||
    getShoppinglistsAdmin,
 | 
			
		||||
    getShoppinglistsShared,
 | 
			
		||||
    newShoppinglist,
 | 
			
		||||
    displayShoppinglist,
 | 
			
		||||
    deleteShoppinglist,
 | 
			
		||||
    addGroup,
 | 
			
		||||
    addItem,
 | 
			
		||||
    verifyInvite,
 | 
			
		||||
    createInvite,
 | 
			
		||||
    editShoppinglist,
 | 
			
		||||
    editGroup,
 | 
			
		||||
    editItem,
 | 
			
		||||
    deleteGroup,
 | 
			
		||||
    deleteItem,
 | 
			
		||||
    manInvite,
 | 
			
		||||
    updateUser,
 | 
			
		||||
    moveDoneItems,
 | 
			
		||||
    getDonePurchases,
 | 
			
		||||
    getShoppinglistsByLink,
 | 
			
		||||
    searchUsers,
 | 
			
		||||
    removeMember
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user