onesignal-expo-plugin 2.0.2 → 2.0.3-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Based on probot-metadata - https://github.com/probot/metadata
3
+ */
4
+ const regex = /\n\n<!-- probot = (.*) -->/
5
+
6
+ const { Octokit } = require("@octokit/action")
7
+
8
+ const octokit = new Octokit()
9
+
10
+ module.exports = (context, issue = null) => {
11
+ console.log(context)
12
+ const prefix = "onesignal-probot"
13
+
14
+ if (!issue) issue = context.payload.issue
15
+
16
+ return {
17
+ async get (key = null) {
18
+ let body = issue.body
19
+
20
+ if (!body) {
21
+ body = (await octokit.issues.get(issue)).data.body || ''
22
+ }
23
+
24
+ const match = body.match(regex)
25
+
26
+ if (match) {
27
+ const data = JSON.parse(match[1])[prefix]
28
+ return key ? data && data[key] : data
29
+ }
30
+ },
31
+
32
+ async set (key, value) {
33
+ let body = issue.body
34
+ let data = {}
35
+
36
+ if (!body) body = (await octokit.issues.get(issue)).data.body || ''
37
+
38
+ body = body.replace(regex, (_, json) => {
39
+ data = JSON.parse(json)
40
+ return ''
41
+ })
42
+
43
+ if (!data[prefix]) data[prefix] = {}
44
+
45
+ if (typeof key === 'object') {
46
+ Object.assign(data[prefix], key)
47
+ } else {
48
+ data[prefix][key] = value
49
+ }
50
+
51
+ body = `${body}\n\n<!-- probot = ${JSON.stringify(data)} -->`
52
+
53
+ const [owner, repo] = process.env.GITHUB_REPOSITORY.split("/")
54
+ const issue_number = context.payload.issue.number
55
+ return octokit.issues.update({ owner, repo, issue_number, body })
56
+ }
57
+ }
58
+ }
@@ -0,0 +1,47 @@
1
+ function calcResponseTimeForIssueCreatedAt(createdAt) {
2
+ const issueOpenedDate = new Date(createdAt);
3
+ const issueTriagedDate = new Date();
4
+ const businessDaysResponseTime = calcBusinessDaysBetweenDates(issueOpenedDate, issueTriagedDate);
5
+ return businessDaysResponseTime;
6
+ }
7
+
8
+ function calcBusinessDaysBetweenDates(openedDate, triagedDate) {
9
+ let differenceInWeeks, responseTime;
10
+ if (triagedDate < openedDate)
11
+ return -1; // error code if dates transposed
12
+ let openedDay = openedDate.getDay(); // day of week
13
+ let triagedDay = triagedDate.getDay();
14
+ openedDay = (openedDay == 0) ? 7 : openedDay; // change Sunday from 0 to 7
15
+ triagedDay = (triagedDay == 0) ? 7 : triagedDay;
16
+ openedDay = (openedDay > 5) ? 5 : openedDay; // only count weekdays
17
+ triagedDay = (triagedDay > 5) ? 5 : triagedDay;
18
+ // calculate differnece in weeks (1000mS * 60sec * 60min * 24hrs * 7 days = 604800000)
19
+ differenceInWeeks = Math.floor((triagedDate.getTime() - openedDate.getTime()) / 604800000);
20
+ if (openedDay < triagedDay) { //Equal to makes it reduce 5 days
21
+ responseTime = (differenceInWeeks * 5) + (triagedDay - openedDay);
22
+ }
23
+ else if (openedDay == triagedDay) {
24
+ responseTime = differenceInWeeks * 5;
25
+ }
26
+ else {
27
+ responseTime = ((differenceInWeeks + 1) * 5) - (openedDay - triagedDay);
28
+ }
29
+ return (responseTime);
30
+ }
31
+
32
+ module.exports = async(context, osmetadata) => {
33
+ const foundResponseTime = await osmetadata(context).get('response_time_in_business_days');
34
+ if (foundResponseTime) {
35
+ const foundString = "already found response time in business days: " + foundResponseTime
36
+ console.log(foundString);
37
+ return foundString;
38
+ }
39
+ if (context.payload.comment && context.payload.comment.author_association != "MEMBER" && context.payload.comment.author_association != "OWNER" && context.payload.comment.author_association != "CONTRIBUTOR") {
40
+ return;
41
+ }
42
+ const businessDaysResponseTime = calcResponseTimeForIssueCreatedAt(context.payload.issue.created_at);
43
+ console.log("response time in business days: " + businessDaysResponseTime);
44
+ const result = osmetadata(context, context.payload.issue).set('response_time_in_business_days', businessDaysResponseTime)
45
+ console.log("osmetadata update result: " + result);
46
+ return "set response time in business days: " + businessDaysResponseTime;
47
+ }
@@ -0,0 +1,32 @@
1
+ name: Set Response Time
2
+ on:
3
+ issue_comment:
4
+ types:
5
+ - created
6
+ issues:
7
+ types:
8
+ - closed
9
+ jobs:
10
+ calculate:
11
+ name: set reponse time for the issue
12
+ if: github.event.issue.pull_request == null
13
+ runs-on: ubuntu-latest
14
+ permissions:
15
+ issues: write
16
+ steps:
17
+ - uses: actions/checkout@v3
18
+ with:
19
+ token: ${{ secrets.GITHUB_TOKEN }}
20
+ - run: npm install @octokit/action@6.0.6
21
+ - uses: actions/github-script@v6
22
+ id: set-time
23
+ with:
24
+ result-encoding: string
25
+ script: |
26
+ const os_probot_metadata = require('./.github/os_probot_metadata.js')
27
+ const set_response_time = require('./.github/set_response_times.js')
28
+ return await set_response_time(context, os_probot_metadata)
29
+ env:
30
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
31
+ - name: Get result
32
+ run: echo "${{steps.set-time.outputs.result}}" >> $GITHUB_STEP_SUMMARY
package/README.md CHANGED
@@ -105,7 +105,7 @@ Add your OneSignal App ID to your [Expo constants via the `extra` param](https:/
105
105
  You can then access the value to pass to the `initialize` function:
106
106
 
107
107
  ```js
108
- import OneSignal from 'react-native-onesignal';
108
+ import { OneSignal } from 'react-native-onesignal';
109
109
  import Constants from "expo-constants";
110
110
  OneSignal.initialize(Constants.expoConfig.extra.oneSignalAppId);
111
111
  ```
@@ -151,7 +151,7 @@ const withOneSignalXcodeProject = (config, props) => {
151
151
  // files / folder appear in the file explorer in Xcode.
152
152
  const groups = xcodeProject.hash.project.objects["PBXGroup"];
153
153
  Object.keys(groups).forEach(function (key) {
154
- if (groups[key].name === undefined) {
154
+ if (typeof groups[key] === "object" && groups[key].name === undefined && groups[key].path === undefined) {
155
155
  xcodeProject.addToPbxGroup(extGroup.uuid, key);
156
156
  }
157
157
  });
@@ -166,7 +166,7 @@ const withOneSignalXcodeProject: ConfigPlugin<OneSignalPluginProps> = (config, p
166
166
  // files / folder appear in the file explorer in Xcode.
167
167
  const groups = xcodeProject.hash.project.objects["PBXGroup"];
168
168
  Object.keys(groups).forEach(function(key) {
169
- if (groups[key].name === undefined) {
169
+ if (typeof groups[key] === "object" && groups[key].name === undefined && groups[key].path === undefined) {
170
170
  xcodeProject.addToPbxGroup(extGroup.uuid, key);
171
171
  }
172
172
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "onesignal-expo-plugin",
3
- "version": "2.0.2",
3
+ "version": "2.0.3-beta.0",
4
4
  "description": "The OneSignal Expo plugin allows you to use OneSignal without leaving the managed workflow. Developed in collaboration with SweetGreen.",
5
5
  "main": "./app.plugin.js",
6
6
  "scripts": {