Skip to content

Commit

Permalink
Add sample project (#321)
Browse files Browse the repository at this point in the history
* add sample

* clean init

* add yalc for sample and nits with license

* roll back previous version on package.json
  • Loading branch information
lucas-zimerman authored Jan 12, 2024
1 parent 1d777d2 commit bea399a
Show file tree
Hide file tree
Showing 14 changed files with 5,583 additions and 38 deletions.
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ sentry.properties
## Build generated
build/
DerivedData
www
coverage

## Various settings
Expand Down
3 changes: 2 additions & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,9 @@ On the root folder of Sentry Cordova run the following commands:

### Testing on a sample project

On the sample project folder, load your local Sentry Cordova with the following command:
On the sample project folder, load your local Sentry Cordova with the following commands:

- yarn platforms:add
- cordova plugin add '../'

If succeeded, Sentry wizzard will be invoked and your project configured with Sentry Cordova.
Expand Down
2 changes: 2 additions & 0 deletions sample/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,5 @@ node_modules/
# Generated by Cordova
/plugins/
/platforms/

.yalc
28 changes: 8 additions & 20 deletions sample/config.xml
Original file line number Diff line number Diff line change
@@ -1,26 +1,14 @@
<?xml version='1.0' encoding='utf-8'?>
<widget id="io.cordova.hellocordova" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>HelloCordova</name>
<description>
A sample Apache Cordova application that responds to the deviceready event.
</description>
<author email="dev@cordova.apache.org" href="http://cordova.io">
Apache Cordova Team
</author>
<widget id="com.sentry.cordova" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>HelloSentry</name>
<description>Sample Apache Cordova App with Sentry</description>
<content src="index.html" />
<access origin="*" />
<access origin="o447951.ingest.sentry.io" />
<access origin="sentry.io" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<platform name="android">
<allow-intent href="market:*" />
</platform>
<platform name="ios">
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
</platform>
<source-file src="..." target-dir="..." />
<engine name="ios" />
<engine name="browser" />
<plugin name="sentry-cordova" />
</widget>
1 change: 1 addition & 0 deletions sample/jsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{}
49 changes: 33 additions & 16 deletions sample/package.json
Original file line number Diff line number Diff line change
@@ -1,33 +1,50 @@
{
"name": "io.cordova.hellocordova",
"displayName": "HelloCordova",
"name": "io.cordova.hellosentrycordova",
"displayName": "SentryCordova",
"version": "1.0.0",
"description": "A sample Apache Cordova application that responds to the deviceready event.",
"author": "Sentry Team and Contributors",
"license": "MIT",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
"build": "cordova build",
"open-xcode": "open ./platforms/ios/HelloSentry.xcworkspace",
"ios-run": "cordova emulate ios",
"platforms:add": "cordova platform add ios && cordova platform add android && cordova platform add browser",
"platforms:remove": "cordova platform rm ios && cordova platform rm android && cordova platform rm browser",
"sentry:remove": "cordova plugins remove sentry-cordova",
"reset-ios": "cordova platform rm ios && cordova platform add ios",
"reset-sentry-ios": "yarn reset-ios && cordova plugins add .yalc/sentry-cordova"
},
"keywords": [
"ecosystem:cordova"
],
"author": "Apache Cordova Team",
"license": "Apache-2.0",
"devDependencies": {
"cordova-browser": "^6.0.0",
"cordova-ios": "^6.2.0",
"cordova-plugin-whitelist": "^1.3.5",
"sentry-cordova": "^1.0.0"
"cordova-android": "^12.0.1",
"cordova-browser": "^7.0.0",
"cordova-ios": "^7.0.1",
"sentry-cordova": "file:.yalc/sentry-cordova"
},
"cordova": {
"plugins": {
"cordova-plugin-whitelist": {},
"_comment_plugins": {
"sentry-cordova": {
"SENTRY_ANDROID_SDK_VERSION": "4.1.0"
"SENTRY_ANDROID_SDK_VERSION": "6.11.0"
}
},
"platforms": [
"browser",
"ios"
]
"ios",
"android",
"browser"
],
"plugins_comment": {
"sentry-cordova": {}
},
"plugins": {
"sentry-cordova": {}
}
},
"dependencies": {
"cordova": "^12.0.0",
"typescript": "^5.2.2"
}
}
}
110 changes: 110 additions & 0 deletions sample/www/css/index.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
* {
-webkit-tap-highlight-color: rgba(0,0,0,0); /* make transparent link selection, adjust last value opacity 0 to 1.0 */
}

body {
-webkit-touch-callout: none; /* prevent callout to copy image, etc when tap to hold */
-webkit-text-size-adjust: none; /* prevent webkit from resizing text to fit */
-webkit-user-select: none; /* prevent copy paste, to allow, change 'none' to 'text' */
background-color:#E4E4E4;
background-image:linear-gradient(to bottom, #A7A7A7 0%, #E4E4E4 51%);
font-family: system-ui, -apple-system, -apple-system-font, 'Segoe UI', 'Roboto', sans-serif;
font-size:12px;
height:100vh;
margin:0px;
padding:0px;
/* Padding to avoid the "unsafe" areas behind notches in the screen */
padding: env(safe-area-inset-top, 0px) env(safe-area-inset-right, 0px) env(safe-area-inset-bottom, 0px) env(safe-area-inset-left, 0px);
text-transform:uppercase;
width:100%;
}

/* Portrait layout (default) */
.app {
background:url(../img/logo.png) no-repeat center top; /* 170px x 200px */
position:absolute; /* position in the center of the screen */
left:50%;
top:50%;
height:50px; /* text area height */
width:225px; /* text area width */
text-align:center;
padding:180px 0px 0px 0px; /* image height is 200px (bottom 20px are overlapped with text) */
margin:-115px 0px 0px -112px; /* offset vertical: half of image height and text area height */
/* offset horizontal: half of text area width */
}

/* Landscape layout (with min-width) */
@media screen and (min-aspect-ratio: 1/1) and (min-width:400px) {
.app {
background-position:left center;
padding:75px 0px 75px 170px; /* padding-top + padding-bottom + text area = image height */
margin:-90px 0px 0px -198px; /* offset vertical: half of image height */
/* offset horizontal: half of image width and text area width */
}
}

h1 {
font-size:24px;
font-weight:normal;
margin:0px;
overflow:visible;
padding:0px;
text-align:center;
}

.event {
border-radius:4px;
color:#FFFFFF;
font-size:12px;
margin:0px 30px;
padding:2px 0px;
}

.event.listening {
background-color:#333333;
display:block;
}

.event.received {
background-color:#4B946A;
display:none;
}

#deviceready.ready .event.listening { display: none; }
#deviceready.ready .event.received { display: block; }

@keyframes fade {
from { opacity: 1.0; }
50% { opacity: 0.4; }
to { opacity: 1.0; }
}

.blink {
animation:fade 3000ms infinite;
-webkit-animation:fade 3000ms infinite;
}


@media screen and (prefers-color-scheme: dark) {
body {
background-image:linear-gradient(to bottom, #585858 0%, #1B1B1B 51%);
}
}
Binary file added sample/www/img/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
56 changes: 56 additions & 0 deletions sample/www/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
<!DOCTYPE html>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<meta charset="utf-8">
<!--
Customize this policy to fit your own app's needs. For more guidance, please refer to the docs:
https://cordova.apache.org/docs/en/latest/
Some notes:
* https://ssl.gstatic.com is required only on Android and is needed for TalkBack to function properly
* Disables use of inline scripts in order to mitigate risk of XSS vulnerabilities. To change this:
* Enable inline JS: add 'unsafe-inline' to default-src
-->
<meta name="format-detection" content="telephone=no">
<meta name="msapplication-tap-highlight" content="no">
<meta name="viewport" content="initial-scale=1, width=device-width, viewport-fit=cover">
<meta name="color-scheme" content="light dark">
<link rel="stylesheet" href="css/index.css">
<title>Hello World</title>
</head>
<body>
<div class="app">
<h1>Apache Cordova</h1>
<div id="deviceready" class="blink">
<p class="event listening">Connecting to Device</p>
<p class="event received">Device is Ready</p>
</div>
<button class="btn btn-positive btn-block" id="exception">Throw Exception</button>
<button class="btn btn-positive btn-block" id="nativeexception">Throw Native Exception</button>
<button class="btn btn-positive btn-block" id="capturemessage">Capture a message</button>
<button class="btn btn-positive btn-block" id="addtag">Add a tag</button>
<button class="btn btn-positive btn-block" id="addbreadcrumb">Add a breadcrumb 3</button>
</div>
<script src="cordova.js"></script>
<script src="js/somePath/data.js" crssorigin="anonyomous"></script>
<script src="js/index.js"></script>
<script type="text/javascript" src="js/events.js"></script>
</body>
</html>
53 changes: 53 additions & 0 deletions sample/www/js/events.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@

(function(window){
document.getElementById("exception").addEventListener("click", buttonClick);
document.getElementById("nativeexception").addEventListener("click", native);
document.getElementById("capturemessage").addEventListener("click", captureMessage);
document.getElementById("addtag").addEventListener("click", setTag);
document.getElementById("addbreadcrumb").addEventListener("click", addBreadcrumb);
})(window);


function buttonClick(){ {
console.log("execute capture error");
try {
data_throwerror();

} catch (error) {
var Sentry = cordova.require("sentry-cordova.Sentry", "debug");
Sentry.captureException(error);

}

}}

function captureMessage(){ {
console.log("execute capture message");
var Sentry = cordova.require("sentry-cordova.Sentry", "debug");
Sentry.captureMessage('test');
}}

function native(){ {
console.log("execute native");
var Sentry = cordova.require("sentry-cordova.Sentry");
Sentry.crash();

}}


function addBreadcrumb(){ {
console.log("execute addbreadcrumb");
var Sentry = cordova.require("sentry-cordova.Sentry");
Sentry.addBreadcrumb({
category: "auth",
message: "Authenticated user 1234",
level: "log",
});
}}

function setTag(){ {
console.log("execute settag");
var Sentry = cordova.require("sentry-cordova.Sentry");
Sentry.setTag("tag", "value");

}}
34 changes: 34 additions & 0 deletions sample/www/js/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/

// Wait for the deviceready event before using any of Cordova's device APIs.
// See https://cordova.apache.org/docs/en/latest/cordova/events/events.html#deviceready
document.addEventListener('deviceready', onDeviceReady, false);

function onDeviceReady() {
// Cordova is now initialized. Have fun!
var Sentry = cordova.require("sentry-cordova.Sentry");
Sentry.init({
dsn: 'https://7e4fb5fbc26e4014acb13772e1782aea@o447951.ingest.sentry.io/5627302',
debug: true,
});

console.log('Running cordova-' + cordova.platformId + '@' + cordova.version);
document.getElementById('deviceready').classList.add('ready');
}
3 changes: 3 additions & 0 deletions sample/www/js/somePath/data.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
function data_throwerror(){ {
throw new Error("My first Sentry error!");
}}
Loading

0 comments on commit bea399a

Please sign in to comment.