private async void BtnSave_ClickedAsync(object sender, System.EventArgs e) { Stream sigimage = await signatureView.GetImageStreamAsync(SignatureImageFormat.Png); BinaryReader br = new BinaryReader(sigimage); br.BaseStream.Position = 0; Byte[] All = br.ReadBytes((int)sigimage.Length); byte[] image = (byte[])All; string base64 = Convert.ToBase64String(image); Random rnd = new Random(); int id = rnd.Next(); fileId = id.ToString(); RequestSave request = new RequestSave() { FileId = fileId, FileName = "test.png", Base64File = base64 }; await PushFileToServer(request); signatureView.Clear(); btnLoad.IsVisible = true; }
//SCRIPTINPUT (FS) public void HandleRequest(int ownID, int requesterID, Request_Options option, string requester) { if (!lookUpTable.Keys.Contains(requester)) { parent.printOut("ERROR: 0X006 @ CHAT_HANDLER/HANDLE_REQUEST"); throw new Exception("ERROR: 0X006 @ CHAT_HANDLER/HANDLE_REQUEST"); } int position = GetRequestFromID(requester, requesterID); if (position == -1) { parent.printOut("ERROR: 0X0001 @ CHAT_HANDLER/HANDLE_REQUEST"); throw new Exception("ERROR: 0X0001 @ CHAT_HANDLER/HANDLE_REQUEST"); } RequestSave current = requests[position]; switch (option) { case Request_Options.ACCEPT: foreach (ChatModule cm in chatWindows.Values.ToList()) { if (cm.IsEqual(ownID)) { if (current.requestsOpen > 0) { cm.SetChatPartner(); foreach (string mes in current.messages) { cm.AddText(mes); } } } AssignNext(cm, position, requester); } RemoveRequestFromList(position, false); break; case Request_Options.DECLINE: AssignNext(chatWindows[ownID], position, requester); current.requestsOpen--; if (current.requestsOpen <= 0) { RemoveRequestFromList(position, true); } break; case Request_Options.DECLINE_ALL: foreach (ChatModule cm in chatWindows.Values.ToList()) { AssignNext(cm, position, requester); } RemoveRequestFromList(position, true); break; } }
async Task PushFileToServer(RequestSave request) { var apiReponse = RestService.For <IApiSaveFile>(_host); var reponse = await apiReponse.SaveFile(request); if (reponse.Success == true) { await DisplayAlert("Notice", "Save Image Success", "OK"); } else { await DisplayAlert("Notice", "Save Image Fail", "OK"); } }
private void MainWebView_ScriptNotify(object sender, NotifyEventArgs e) { if (!string.IsNullOrEmpty(e.Value)) { var notify = JsonConvert.DeserializeObject <NotifyPackage>(e.Value); switch (notify.Key) { case WebScriptNotifyType.AppLoaded: IsControlLoaded = true; IsLoadingRingActive = false; break; case WebScriptNotifyType.EditorLoaded: IsEditorLoaded = true; break; case WebScriptNotifyType.ExcuteActionSuccess: case WebScriptNotifyType.DefineThemeSuccess: ExcuteSuccess?.Invoke(this, new EditorExcuteSuccessEventArgs(notify.Key, notify.Value)); break; case WebScriptNotifyType.ExcuteActionFailed: case WebScriptNotifyType.DefineThemeFailed: case WebScriptNotifyType.SetThemeFailed: ExcuteFailed?.Invoke(this, new EditorExcuteFailedEventArgs(notify.Value)); break; case WebScriptNotifyType.Save: RequestSave?.Invoke(this, EventArgs.Empty); break; case WebScriptNotifyType.ContentChanged: ContentChanged?.Invoke(this, EventArgs.Empty); break; case WebScriptNotifyType.ContextMenu: ShowContextMenuFlyout(notify.Value); break; case WebScriptNotifyType.Resize: Resize?.Invoke(this, new EditorResizeEventArgs(Convert.ToDouble(notify.Value))); break; default: break; } } }
//SCRIPTINPUT (FS) void RemoveRequestFromList(int position, bool declined) { RequestSave toDelete = requests[position]; int[] cPos = lookUpTable[toDelete.targetName]; if (cPos.Length == 1) { if (cPos[0] != position) { parent.printOut("ERROR: 0X002 @ CHAT_HANDLER/REMOVE_REQUEST"); throw new Exception("ERROR: 0X002 @ CHAT_HANDLER/REMOVE_REQUEST"); } lookUpTable.Remove(toDelete.targetName); requests.RemoveAt(position); } else { int[] newLookup = new int[lookUpTable[toDelete.targetName].Length - 1]; short counter = 0; try { foreach (int i in cPos) { if (i != position) { newLookup[counter] = i; counter++; } } } catch (Exception) { //ID not found => tried to copy all n entries in n-1 array => exception => ??? => profit parent.printOut("ERROR: 0X003 @ CHAT_HANDLER/REMOVE_REQUEST"); throw new Exception("ERROR: 0X003 @ CHAT_HANDLER/REMOVE_REQUEST"); } lookUpTable[toDelete.targetName] = newLookup; requests.RemoveAt(position); } if (declined) { string mes = "Chat/ReqDec/" + toDelete.targetID; parent.SendMessage(toDelete.targetName, mes); } }
void OnRequestSave() { ManipulationData(); RequestSave?.Invoke(this, EventArgs.Empty); }
//SCRIPTINPUT (FS) public void HandleMessage(string message, string sender) { string[] messageParts = message.Split('/'); if (messageParts.Length < 3) { parent.printOut("ERROR: 0X007 @ CHAT_HANDLER/HANDLE_MESSAGE"); throw new Exception("ERROR: 0X007 @ CHAT_HANDLER/HANDLE_MESSAGE"); } if (messageParts[1] == "ReqDec") { int id; try { id = int.Parse(messageParts[2]); chatWindows[id].ConnectionDeclined(sender); } catch (Exception) { parent.printOut("WARNING: Bad message recieved: " + message); return; } return; } try { int[] Ids = ExtractID(message); if (Ids[1] == 0) { RequestSave rs = new RequestSave { targetName = sender, targetID = Ids[0], requestsOpen = chatWindows.Count, messages = new List <string>() }; string mes = message.Split('/')[4]; rs.messages.Add(mes); requests.Add(rs); if (!lookUpTable.Keys.Contains(sender)) { int[] temp = { requests.Count - 1 }; lookUpTable.Add(sender, temp); } else { int[] save = lookUpTable[sender]; int[] copy = new int[save.Length]; for (int i = 0; i < save.Length; i++) { copy[i] = save[i]; } copy[copy.Length - 1] = Ids[0]; } foreach (ChatModule cm in chatWindows.Values.ToList()) { cm.SetRequest(sender, Ids[0]); } } else if (Ids[0] != -1) { string mes = message.Split('/')[4]; chatWindows[Ids[1]].AddText(mes); } } catch (Exception e) { parent.printOut(e.Message); parent.printOut("ERROR: 0X008 @ CHAT_HANDLER/HANDLE_MESSAGE"); throw new Exception("ERROR: 0X008 @ CHAT_HANDLER/HANDLE_MESSAGE"); } }