소스 검색

Fix some bugs....

PascalCoin 4 년 전
부모
커밋
7d4e907336
2개의 변경된 파일39개의 추가작업 그리고 23개의 파일을 삭제
  1. 34 20
      src/core/URPC.pas
  2. 5 3
      src/gui-classic/UFRMOperation.pas

+ 34 - 20
src/core/URPC.pas

@@ -471,27 +471,41 @@ Begin
 end;
 
 class function TPascalCoinJSONComp.OverridePayloadParams(const AInputParams : TPCJSONObject; const AEPASA : TEPasa) : Boolean;
+var LPayloadmethod_old,LPayloadmethod_new : String;
+    LPayload_old, LPayload_new : String;
+    LPwd_old, LPwd_new : String;
 begin
-   // none, dest, sender, aes, payload, pwd
-   if (NOT AEPASA.IsClassicPASA) AND (AInputParams.HasValue('payload') OR AInputParams.HasValue('payload_method') OR AInputParams.HasValue('pwd')) then
-     Exit(False);
-
-   if AEPASA.PayloadType.HasTrait(ptPublic) then begin
-     AInputParams.GetAsVariant('payload_method').Value := 'none';
-     AInputParams.GetAsVariant('payload').Value := AEPASA.GetRawPayloadBytes.ToHexaString;
-   end else if AEPASA.PayloadType.HasTrait(ptSenderKeyEncrypted) then begin
-     AInputParams.GetAsVariant('payload_method').Value := 'sender';
-     AInputParams.GetAsVariant('payload').Value := AEPASA.GetRawPayloadBytes.ToHexaString;
-   end else if AEPASA.PayloadType.HasTrait(ptRecipientKeyEncrypted) then begin
-     AInputParams.GetAsVariant('payload_method').Value := 'dest';
-     AInputParams.GetAsVariant('payload').Value := AEPASA.GetRawPayloadBytes.ToHexaString;
-   end else if AEPASA.PayloadType.HasTrait(ptPasswordEncrypted) then begin
-     AInputParams.GetAsVariant('payload_method').Value := 'aes';
-     AInputParams.GetAsVariant('payload').Value := AEPASA.GetRawPayloadBytes.ToHexaString;
-     AInputParams.GetAsVariant('pwd').Value := AEPASA.Password;
-     Result := True;
-   end;
-   Result := True;
+  if AEPASA.IsClassicPASA then Exit(True);   // Not an EPASA
+
+  if AInputParams.HasValue('payload') then LPayload_old := AInputParams.AsString('payload','')
+  else LPayload_old := '';
+  if AInputParams.HasValue('payload_method') then LPayloadmethod_old := AInputParams.AsString('payload_method','')
+  else LPayloadmethod_old := '';
+  if AInputParams.HasValue('pwd') then LPwd_old := AInputParams.AsString('pwd','')
+  else LPwd_old := '';
+
+  if AEPASA.PayloadType.HasTrait(ptPublic) then begin
+    LPayloadmethod_new := 'none';
+  end else if AEPASA.PayloadType.HasTrait(ptSenderKeyEncrypted) then begin
+    LPayloadmethod_new := 'sender';
+  end else if AEPASA.PayloadType.HasTrait(ptRecipientKeyEncrypted) then begin
+    LPayloadmethod_new := 'dest';
+  end else if AEPASA.PayloadType.HasTrait(ptPasswordEncrypted) then begin
+    LPayloadmethod_new := 'aes';
+  end;
+  LPayload_new := AEPASA.GetRawPayloadBytes.ToHexaString;
+  LPwd_new := AEPASA.Password;
+
+  if (LPayloadmethod_old<>'') and (LPayloadmethod_old<>LPayloadmethod_new) then Exit(False);
+  AInputParams.GetAsVariant('payload_method').Value := LPayloadmethod_new;
+
+  if (LPayload_old<>'') and (LPayload_old<>LPayload_new) then Exit(False);
+  AInputParams.GetAsVariant('payload').Value := LPayload_new;
+
+  if (LPwd_old<>'') and (LPwd_old<>LPwd_new) then Exit(False);
+  if (LPwd_new<>'') then AInputParams.GetAsVariant('pwd').Value := LPwd_new;
+
+  Result := True;
 end;
 
 class function TPascalCoinJSONComp.CapturePubKey(

+ 5 - 3
src/gui-classic/UFRMOperation.pas

@@ -1663,9 +1663,11 @@ begin
   try
     LTargetEPASA := TEPasa.Empty;
 
-    if NOT TEPasa.TryParse(ebDestAccount.Text, LTargetEPASA) then begin
-      AErrors := 'Indeterminable target';
-      Exit(False);
+    If (PageControlOpType.ActivePage=tsTransaction) then begin
+      if NOT TEPasa.TryParse(ebDestAccount.Text, LTargetEPASA) then begin
+        AErrors := 'Indeterminable target';
+        Exit(False);
+      end;
     end;
 
     if (LUserPayloadString='') then begin