Compare commits

...
Author SHA1 Message Date
jakub e41d46de73 bump version t0 0.13.4
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2020-02-11 10:44:48 +01:00
jakub e25b2a70a3 drop uploads to diawi/play/sauce
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2020-02-11 10:44:47 +01:00
Roman Volosovskyi 7f38c51503 [#8277] Report a bug template
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2019-05-24 19:09:47 +02:00
Roman Volosovskyi 0949b90563 App version and more detail in logs email 2019-05-24 19:09:37 +02:00
Roman Volosovskyi d284b2925c Send logs on shaking device 2019-05-24 19:08:44 +02:00
16 changed files with 163 additions and 31 deletions
+2 -1
View File
@@ -217,7 +217,7 @@ android {
initWith release
applicationIdSuffix ".pr"
versionNameSuffix ".pr"
debuggable true
debuggable false
matchingFallbacks = ["release"]
// necessary to make react-native-config's code generation work
resValue "string", "build_config_package", "im.status.ethereum"
@@ -276,6 +276,7 @@ dependencies {
implementation project(':react-native-webview')
implementation project(':react-native-config')
implementation project(':react-native-firebase')
implementation project(':react-native-shake')
implementation project(':RNMail')
compile ('com.google.android.gms:play-services-base:16.0.1') {
force = true
@@ -36,6 +36,7 @@ import io.invertase.firebase.notifications.RNFirebaseNotificationsPackage;
import io.realm.react.RealmReactPackage;
import me.alwx.HttpServer.HttpServerReactPackage;
import com.chirag.RNMail.*;
import com.clipsub.RNShake.RNShakeEventPackage;
public class MainApplication extends MultiDexApplication implements ReactApplication {
@@ -72,7 +73,8 @@ public class MainApplication extends MultiDexApplication implements ReactApplica
new WebViewBridgePackage(BuildConfig.DEBUG_WEBVIEW == "1", callRPC),
new RNCWebViewPackage(),
new ReactNativeConfigPackage(),
new KeychainPackage());
new KeychainPackage(),
new RNShakeEventPackage());
}
@Override
+2
View File
@@ -44,3 +44,5 @@ include ':react-native-android'
project(':react-native-android').projectDir = new File(rootProject.projectDir, '../node_modules/react-native/ReactAndroid')
include ':RNMail', ':app'
project(':RNMail').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-mail/android')
include ':react-native-shake'
project(':react-native-shake').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-shake/android')
-9
View File
@@ -81,15 +81,6 @@ pipeline {
steps {
script {
env.PKG_URL = cmn.utils.uploadArtifact(apk)
/* build type specific */
switch (btype) {
case 'release':
mobile.android.uploadToPlayStore(); break;
case 'nightly':
env.DIAWI_URL = mobile.android.uploadToDiawi(); break;
case 'e2e':
env.SAUCE_URL = mobile.android.uploadToSauceLabs()
}
}
}
}
+2 -1
View File
@@ -44,7 +44,8 @@
"js-sha3"
"react-navigation"
"hi-base32"
"react-native-mail"]
"react-native-mail"
"react-native-shake"]
;; Desktop modules
:desktop-modules ["realm"
+30
View File
@@ -33,6 +33,7 @@
42B30EAD0EED4C72BB96D1AB /* Inter-ExtraBold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 6B145D55D500476BB45C2232 /* Inter-ExtraBold.otf */; };
475D202F20B7450D00879A77 /* libRNFirebase.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 475D1FC020B7413500879A77 /* libRNFirebase.a */; };
4C16DE0C1F89508700AA10DB /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C16DE0B1F89508700AA10DB /* JavaScriptCore.framework */; };
4C5F69C322815E6A00D26222 /* libRNShakeEvent.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C5F69BE22815E4F00D26222 /* libRNShakeEvent.a */; };
4C9FBC56227C85640024181F /* libRNMail.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C9FBC50227C85250024181F /* libRNMail.a */; };
54BD2CE922134B6291FE1BFD /* Inter-Light-BETA.otf in Resources */ = {isa = PBXBuildFile; fileRef = 6864A92FD6844B928C52F5C1 /* Inter-Light-BETA.otf */; };
57C854A7993C47A3B1AECD32 /* Inter-MediumItalic.otf in Resources */ = {isa = PBXBuildFile; fileRef = C6B1215047604CD59A4C74D6 /* Inter-MediumItalic.otf */; };
@@ -188,6 +189,13 @@
remoteGlobalIDString = 134814201AA4EA6300B7C361;
remoteInfo = RNFirebase;
};
4C5F69BD22815E4F00D26222 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 4C5F698522815E4E00D26222 /* RNShakeEvent.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 134814201AA4EA6300B7C361;
remoteInfo = RNShakeEvent;
};
4C9FBC4F227C85250024181F /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 4C9FBC19227C85250024181F /* RNMail.xcodeproj */;
@@ -556,6 +564,7 @@
475D1FCD20B7415300879A77 /* libFirebaseCore.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libFirebaseCore.a; sourceTree = BUILT_PRODUCTS_DIR; };
475D1FCE20B7415300879A77 /* libFirebaseMessaging.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libFirebaseMessaging.a; sourceTree = BUILT_PRODUCTS_DIR; };
4C16DE0B1F89508700AA10DB /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
4C5F698522815E4E00D26222 /* RNShakeEvent.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNShakeEvent.xcodeproj; path = "../node_modules/react-native-shake/ios/RNShakeEvent.xcodeproj"; sourceTree = "<group>"; };
4C9FBC19227C85250024181F /* RNMail.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNMail.xcodeproj; path = "../node_modules/react-native-mail/RNMail.xcodeproj"; sourceTree = "<group>"; };
4E586E1B0E544F64AA9F5BD1 /* libz.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
5535217F57E44D77AA9CF083 /* libRCTOrientation.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRCTOrientation.a; sourceTree = "<group>"; };
@@ -629,6 +638,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
4C5F69C322815E6A00D26222 /* libRNShakeEvent.a in Frameworks */,
ABC194E5221009A800EB06E6 /* libRNLanguages.a in Frameworks */,
475D202F20B7450D00879A77 /* libRNFirebase.a in Frameworks */,
4C9FBC56227C85640024181F /* libRNMail.a in Frameworks */,
@@ -891,6 +901,14 @@
name = Products;
sourceTree = "<group>";
};
4C5F698622815E4E00D26222 /* Products */ = {
isa = PBXGroup;
children = (
4C5F69BE22815E4F00D26222 /* libRNShakeEvent.a */,
);
name = Products;
sourceTree = "<group>";
};
4C9FBC1A227C85250024181F /* Products */ = {
isa = PBXGroup;
children = (
@@ -922,6 +940,7 @@
832341AE1AAA6A7D00B99B32 /* Libraries */ = {
isa = PBXGroup;
children = (
4C5F698522815E4E00D26222 /* RNShakeEvent.xcodeproj */,
4C9FBC19227C85250024181F /* RNMail.xcodeproj */,
ABC194DC2210099B00EB06E6 /* RNLanguages.xcodeproj */,
B461988B2210C98F00603CF2 /* RNCWebView.xcodeproj */,
@@ -1324,6 +1343,10 @@
ProductGroup = 475D1EEE20B73EE000879A77 /* Products */;
ProjectRef = AF409BB755B94FB1BBA01927 /* RNSecureRandom.xcodeproj */;
},
{
ProductGroup = 4C5F698622815E4E00D26222 /* Products */;
ProjectRef = 4C5F698522815E4E00D26222 /* RNShakeEvent.xcodeproj */;
},
{
ProductGroup = 92925B361F571DE600203EEB /* Products */;
ProjectRef = 1E74DC52A1E449A2BA858B14 /* RNSVG.xcodeproj */;
@@ -1451,6 +1474,13 @@
remoteRef = 475D1FBF20B7413500879A77 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
4C5F69BE22815E4F00D26222 /* libRNShakeEvent.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libRNShakeEvent.a;
remoteRef = 4C5F69BD22815E4F00D26222 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
4C9FBC50227C85250024181F /* libRNMail.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
+1 -1
View File
@@ -1 +1 @@
0.13.0
0.13.4
+1
View File
@@ -54,6 +54,7 @@
"react-native-randombytes": "3.5.0",
"react-native-safe-area-view": "0.9.0",
"react-native-securerandom": "git+https://github.com/status-im/react-native-securerandom.git#0.1.1-2",
"react-native-shake": "^3.3.1",
"react-native-splash-screen": "3.1.1",
"react-native-status-keycard": "git+https://github.com/status-im/react-native-status-keycard.git#v2.5.4",
"react-native-svg": "^9.2.4",
+8 -1
View File
@@ -3526,7 +3526,7 @@ invariant@2.2.0:
dependencies:
loose-envify "^1.0.0"
invariant@^2.2.2, invariant@^2.2.4:
invariant@^2.2.2, invariant@^2.2.4, invariant@^2.2.x:
version "2.2.4"
resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==
@@ -5581,6 +5581,13 @@ react-native-scrollable-mixin@^1.0.1:
dependencies:
base64-js "*"
react-native-shake@^3.3.1:
version "3.3.1"
resolved "https://registry.yarnpkg.com/react-native-shake/-/react-native-shake-3.3.1.tgz#e168827015db0cfb316f2bd428afe95f225fda6a"
integrity sha512-Z5W/tC3rsOcQmAOxe/uHsGNrXyZx3xwd1bFaRw0pbO0lhG4Z1g2MOcrO/Pa+ZA59ap/1tmwVP6/+IPtt6DPT1w==
dependencies:
invariant "^2.2.x"
react-native-splash-screen@3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/react-native-splash-screen/-/react-native-splash-screen-3.1.1.tgz#1a4e46c9fdce53ff52af2a2cb4181788c4e30b30"
@@ -33,4 +33,5 @@
(def snoopy-buffer #js {})
(def background-timer #js {:setTimeout (fn [cb ms] (js/setTimeout cb ms))})
(def react-navigation (js/require "react-navigation"))
(def react-native-shake #js {})
(def react-native-mail #js {:mail (fn [])})
@@ -28,6 +28,7 @@
(def snoopy-buffer (js/require "rn-snoopy/stream/buffer"))
(def background-timer (.-default (js/require "react-native-background-timer")))
(def react-navigation (js/require "react-navigation"))
(def react-native-shake (js/require "react-native-shake"))
(def react-native-mail (.-default (js/require "react-native-mail")))
(def desktop-linking #js {:addEventListener (fn [])})
(def desktop-menu #js {:addEventListener (fn [])})
+11 -2
View File
@@ -21,6 +21,9 @@
(defn on-languages-change [event]
(set! (.-locale rn-dependencies/i18n) (.-language event)))
(defn on-shake []
(dispatch [:shake-event]))
(defn app-root [props]
(let [keyboard-height (subscribe [:keyboard-height])]
(reagent/create-class
@@ -42,7 +45,10 @@
(dispatch [:set :keyboard-height 0]))))
(.hide react/splash-screen)
(.addEventListener react/app-state "change" app-state-change-handler)
(.addEventListener rn-dependencies/react-native-languages "change" on-languages-change))
(.addEventListener rn-dependencies/react-native-languages "change" on-languages-change)
(.addEventListener rn-dependencies/react-native-shake
"ShakeEvent"
on-shake))
:component-did-mount
(fn [this]
(dispatch [:set-initial-props (reagent/props this)]))
@@ -50,7 +56,10 @@
(fn []
(.stop react/http-bridge)
(.removeEventListener react/app-state "change" app-state-change-handler)
(.removeEventListener rn-dependencies/react-native-languages "change" on-languages-change))
(.removeEventListener rn-dependencies/react-native-languages "change" on-languages-change)
(.removeEventListener rn-dependencies/react-native-shake
"ShakeEvent"
on-shake))
:display-name "root"
:reagent-render views/main})))
+6 -1
View File
@@ -2120,4 +2120,9 @@
(fx/merge cofx
(custom-tokens/remove-custom-token token)
(when navigate-back?
(navigation/navigate-back)))))
(navigation/navigate-back)))))
(handlers/register-handler-fx
:shake-event
(fn [cofx _]
(logging/show-logs-dialog cofx)))
+11 -2
View File
@@ -19,6 +19,9 @@
(defn on-languages-change [event]
(set! (.-locale rn-dependencies/i18n) (.-language event)))
(defn on-shake []
(dispatch [:shake-event]))
(defn app-root [props]
(let [keyboard-height (subscribe [:keyboard-height])]
(reagent/create-class
@@ -37,7 +40,10 @@
(dispatch [:set :keyboard-height 0])))
(.hide react/splash-screen)
(.addEventListener react/app-state "change" app-state-change-handler)
(.addEventListener rn-dependencies/react-native-languages "change" on-languages-change))
(.addEventListener rn-dependencies/react-native-languages "change" on-languages-change)
(.addEventListener rn-dependencies/react-native-shake
"ShakeEvent"
on-shake))
:component-did-mount
(fn [this]
(dispatch [:set-initial-props (reagent/props this)]))
@@ -45,7 +51,10 @@
(fn []
(.stop react/http-bridge)
(.removeEventListener react/app-state "change" app-state-change-handler)
(.removeEventListener rn-dependencies/react-native-languages "change" on-languages-change))
(.removeEventListener rn-dependencies/react-native-languages "change" on-languages-change)
(.removeEventListener rn-dependencies/react-native-shake
"ShakeEvent"
on-shake))
:display-name "root"
:reagent-render views/main})))
+80 -10
View File
@@ -6,7 +6,12 @@
[status-im.utils.handlers :as handlers]
[status-im.utils.email :as mail]
[taoensso.timbre :as log]
[status-im.utils.config :as config]))
[status-im.utils.config :as config]
[status-im.i18n :as i18n]
[status-im.utils.platform :as platform]
[status-im.utils.build :as build]
[status-im.transport.utils :as transport.utils]
[status-im.utils.datetime :as datetime]))
(def report-email "error-reports@status.im")
(def max-log-entries 1000)
@@ -63,14 +68,79 @@
:node/status]))]
{:logs/archive-logs [db-json ::send-email]}))
(fx/defn show-logs-dialog
[{:keys [db]}]
(when-not (:logging/dialog-shown? db)
{:db
(assoc db :logging/dialog-shown? true)
:utils/show-confirmation
{:title (i18n/label :t/send-logs)
:content (i18n/label :t/send-logs-to
{:email report-email})
:confirm-button-text (i18n/label :t/send-logs)
:on-accept #(re-frame/dispatch
[:logging.ui/send-logs-pressed])
:on-cancel #(re-frame/dispatch
[:logging/dialog-canceled])}}))
(fx/defn dialog-closed
[{:keys [db]}]
{:db (dissoc db :logging/dialog-shown?)})
(defn email-body
[{:keys [:web3-node-version :mailserver/current-id
:node-info :peers-summary]
:as db}]
"logs attached"
(let [build-number (if platform/desktop? build/version build/build-no)
build-version (str build/version " (" build-number ")")
separator (clojure.string/join (take 40 (repeat "-")))
[enode-id ip-address port]
(transport.utils/extract-url-components (:enode node-info))]
(clojure.string/join
"\n"
(concat [(i18n/label :t/report-bug-email-template)]
[separator
(str "App version: " build-version)
(str "OS: " platform/os)
(str "Node version: " web3-node-version)
(str "Mailserver: " (name current-id))
separator
"Node Info"
(str "id: " enode-id)
(str "ip: " ip-address)
(str "port: " port)
separator
"Peers"]
(mapcat
(fn [{:keys [enode]}]
(let [[enode-id ip-address port]
(transport.utils/extract-url-components enode)]
[(str "id: " enode-id)
(str "ip: " ip-address)
(str "port: " port)
"\n"]))
peers-summary)
[separator
(datetime/timestamp->long-date
(datetime/now))]))))
(handlers/register-handler-fx
::send-email
(fn [cofx [_ archive-path]]
(mail/send-email cofx
{:subject "Error report"
:recipients [report-email]
:body "logs attached"
:attachment {:path archive-path
:type "zip"
:name "status_logs.zip"}}
(fn []))))
(fn [{:keys [db] :as cofx} [_ archive-path]]
(fx/merge
cofx
(dialog-closed)
(mail/send-email
{:subject "Error report"
:recipients [report-email]
:body (email-body db)
:attachment {:path archive-path
:type "zip"
:name "status_logs.zip"}}
(fn [])))))
(handlers/register-handler-fx
:logging/dialog-canceled
(fn [cofx]
(dialog-closed cofx)))
+4 -2
View File
@@ -424,7 +424,8 @@
"logout": "Log out",
"status-not-sent-tap": "Not confirmed. Tap for options",
"status-not-sent-click": "Not confirmed. Click for options",
"send-logs": "Send logs",
"send-logs": "Report a bug",
"send-logs-to": "Report a bug to {{email}}",
"edit-network-config": "Edit network config",
"clear-history-confirmation": "Clear history?",
"currency-display-name-gyd": "Guyana Dollar",
@@ -1048,5 +1049,6 @@
"wrong-address" : "Wrong address",
"default" : "Default",
"token-details" : "Token details",
"remove-token" : "Remove token"
"remove-token" : "Remove token",
"report-bug-email-template": "1. Issue Description\n(Describe the feature you would like, or briefly summarise the bug and what you did, what you expected to happen, and what actually happens. Sections below)\n\n\n2. Steps to reproduce\n(Describe how we can replicate the bug step by step.)\n-Open Status\n-...\n-Step 3, etc.\n\n\n3. Expected behavior\n(Describe what you expected to happen.)\n\n\n4. Actual behavior\n(Describe what actually happened.)\n\n\n5. Attach screenshots that can demo the problem, please\n"
}