From c62ec14e0781a11a9f356ab26c022e5f1393f5fc Mon Sep 17 00:00:00 2001 From: wish Date: Sun, 17 Jul 2022 08:59:01 +1000 Subject: [PATCH] handle character deletion --- Erupe/server/signserver/dbutils.go | 10 ++++++++-- Erupe/server/signserver/session.go | 4 ++++ Erupe/www/erupe/js/script.js | 25 ++++++++++++++++++++----- 3 files changed, 32 insertions(+), 7 deletions(-) diff --git a/Erupe/server/signserver/dbutils.go b/Erupe/server/signserver/dbutils.go index 4cec89c96..1b5662dc8 100644 --- a/Erupe/server/signserver/dbutils.go +++ b/Erupe/server/signserver/dbutils.go @@ -162,7 +162,7 @@ func (s *Server) getGuildmatesForCharacters(chars []character) ([]members) { charGuildmates[i].CID = char.ID } guildmates = append(guildmates, charGuildmates...) - } + } } if len(guildmates) > 255 { // Uint8 guildmates = guildmates[:255] @@ -176,7 +176,13 @@ func (s *Server) deleteCharacter(cid int, token string) error { if err != nil { return err // Invalid token } - _, err = s.db.Exec("UPDATE characters SET deleted = true WHERE id = $1", cid) + var isNew bool + err = s.db.QueryRow("SELECT is_new_character FROM characters WHERE id = $1", cid).Scan(&isNew) + if isNew { + _, err = s.db.Exec("DELETE FROM characters WHERE id = $1", cid) + } else { + _, err = s.db.Exec("UPDATE characters SET deleted = true WHERE id = $1", cid) + } if err != nil { return err } diff --git a/Erupe/server/signserver/session.go b/Erupe/server/signserver/session.go index cb4a3619c..af900a84a 100644 --- a/Erupe/server/signserver/session.go +++ b/Erupe/server/signserver/session.go @@ -63,6 +63,10 @@ func (s *Session) handlePacket(pkt []byte) error { characterID := int(bf.ReadUint32()) s.server.deleteCharacter(characterID, loginTokenString) sugar.Infof("Deleted character ID: %v\n", characterID) + err := s.cryptConn.SendPacket([]byte{0x01}) // DEL_SUCCESS + if err != nil { + return nil + } default: sugar.Infof("Got unknown request type %s, data:\n%s\n", reqType, hex.Dump(bf.DataFromCurrent())) } diff --git a/Erupe/www/erupe/js/script.js b/Erupe/www/erupe/js/script.js index 1171c8d8d..5288414fb 100644 --- a/Erupe/www/erupe/js/script.js +++ b/Erupe/www/erupe/js/script.js @@ -305,6 +305,18 @@ function checkAuth() { document.getElementById('processing').style.display = 'none'; } +function checkDelete() { + let deleteResult = window.external.getLastAuthResult(); + if (deleteResult == 'DEL_PROGRESS') { + setTimeout(checkDelete, 10); + return; + } else if (deleteResult == 'DEL_SUCCESS') { + doLogin(0); + switchPrompt(); + toggleModal(0); + } +} + function launch() { document.getElementById('game_starting').style.display = 'block'; try { @@ -326,6 +338,11 @@ function launch() { }, 3000); } +function deleteCharacter(id) { + window.external.deleteCharacter(id); + checkDelete(); +} + function autoWarning() { let autoBox = document.getElementById('auto_box'); if (autoBox.checked) { @@ -404,18 +421,16 @@ function setModalContent(preset, url) {
it will be gone forever. \ \ '; - modal.querySelector('.dialog .btns').innerHTML = ' \ + modal.querySelector(".dialog .btns").innerHTML = ' \ \ '; - // Uses the launcher delete - // modal.querySelector(".dialog .btns").innerHTML = ""; break; case 'addCharNew': modal.querySelector('.dialog p').innerHTML = ' \