Skip to content

Commit

Permalink
feat(performance): add missing methods (e. g. setAttribute(...), getA…
Browse files Browse the repository at this point in the history
…ttribute(...)) (#770)

* feat(performance): add missing methods  (#505)

Add method definitions.

* feat(performance): add missing methods  (#505)

Implement all method definitions on the web.

* feat(performance): add missing methods  (#505)

Update definitions.

* feat(performance): add missing methods  (#505)

Change return of getAttributes on the web.

* feat(performance): add missing methods  (#505)

Implement all methods on ios.

* feat(performance): add missing methods  (#505)

Add since attribute to definitions.

* feat(performance): add missing methods  (#505)

Implement new methods on android.

* feat(performance): add missing methods  (#505)

Add changeset

* feat(performance): add missing methods  (#505)

Remove classes and update types.

* wip

* feat(performance): add missing methods  (#505)

Refactor helper methods into separate class.

* feat(performance): add missing methods  (#505)

Remove record implementation from android.

* feat(performance): add missing methods  (#505)

Remove record implementation from ios.

* feat(performance): add missing methods  (#505)

Update method definitions.ts for record.

* feat(performance): add missing methods  (#505)

Remove none return type from methods.

* feat(performance): add missing methods  (#505)

Remove throwing error when trace does not exist.

---------

Co-authored-by: Robin Genz <[email protected]>
  • Loading branch information
ebarooni and robingenz authored Dec 12, 2024
1 parent 258ea28 commit 1cfcf18
Show file tree
Hide file tree
Showing 9 changed files with 897 additions and 1 deletion.
5 changes: 5 additions & 0 deletions .changeset/chilly-seahorses-design.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@capacitor-firebase/performance': minor
---

feat: add `putAttribute(...)`, `getAttribute(...)`, `getAttributes(...)`, `putMetric(...)`, `getMetric(...)` and `record(...)` methods
215 changes: 215 additions & 0 deletions packages/performance/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,15 @@ const isEnabled = async () => {
* [`incrementMetric(...)`](#incrementmetric)
* [`setEnabled(...)`](#setenabled)
* [`isEnabled()`](#isenabled)
* [`putAttribute(...)`](#putattribute)
* [`getAttribute(...)`](#getattribute)
* [`getAttributes(...)`](#getattributes)
* [`removeAttribute(...)`](#removeattribute)
* [`putMetric(...)`](#putmetric)
* [`getMetric(...)`](#getmetric)
* [`record(...)`](#record)
* [Interfaces](#interfaces)
* [Type Aliases](#type-aliases)

</docgen-index>

Expand Down Expand Up @@ -160,6 +168,133 @@ Determines whether performance monitoring is enabled or disabled.
--------------------


### putAttribute(...)

```typescript
putAttribute(options: PutAttributeOptions) => Promise<void>
```

Sets a custom attribute of a trace to a given value.

| Param | Type |
| ------------- | ------------------------------------------------------------------- |
| **`options`** | <code><a href="#putattributeoptions">PutAttributeOptions</a></code> |

**Since:** 6.3.0

--------------------


### getAttribute(...)

```typescript
getAttribute(options: GetAttributeOptions) => Promise<GetAttributeResult>
```

Returns the value of a custom attribute of a trace.

| Param | Type |
| ------------- | ------------------------------------------------------------------- |
| **`options`** | <code><a href="#getattributeoptions">GetAttributeOptions</a></code> |

**Returns:** <code>Promise&lt;<a href="#getattributeresult">GetAttributeResult</a>&gt;</code>

**Since:** 6.3.0

--------------------


### getAttributes(...)

```typescript
getAttributes(options: GetAttributesOptions) => Promise<GetAttributesResult>
```

Gets the all the custom attributes of a trace with their values.

| Param | Type |
| ------------- | --------------------------------------------------------------------- |
| **`options`** | <code><a href="#getattributesoptions">GetAttributesOptions</a></code> |

**Returns:** <code>Promise&lt;<a href="#getattributesresult">GetAttributesResult</a>&gt;</code>

**Since:** 6.3.0

--------------------


### removeAttribute(...)

```typescript
removeAttribute(options: RemoveAttributeOptions) => Promise<void>
```

Removes a custom attribute from a trace given its name.

| Param | Type |
| ------------- | ------------------------------------------------------------------- |
| **`options`** | <code><a href="#getattributeoptions">GetAttributeOptions</a></code> |

**Since:** 6.3.0

--------------------


### putMetric(...)

```typescript
putMetric(options: PutMetricOptions) => Promise<void>
```

Sets the value of a custom metric.

| Param | Type |
| ------------- | ------------------------------------------------------------- |
| **`options`** | <code><a href="#putmetricoptions">PutMetricOptions</a></code> |

**Since:** 6.3.0

--------------------


### getMetric(...)

```typescript
getMetric(options: GetMetricOptions) => Promise<GetMetricResult>
```

Get the value of a custom metric by name.

| Param | Type |
| ------------- | ------------------------------------------------------------- |
| **`options`** | <code><a href="#getmetricoptions">GetMetricOptions</a></code> |

**Returns:** <code>Promise&lt;<a href="#getmetricresult">GetMetricResult</a>&gt;</code>

**Since:** 6.3.0

--------------------


### record(...)

```typescript
record(options: RecordOptions) => Promise<void>
```

Records a trace given its name and options.

Only available on web.

| Param | Type |
| ------------- | ------------------------------------------------------- |
| **`options`** | <code><a href="#recordoptions">RecordOptions</a></code> |

**Since:** 6.3.0

--------------------


### Interfaces


Expand Down Expand Up @@ -199,6 +334,86 @@ Determines whether performance monitoring is enabled or disabled.
| ------------- | -------------------- | --------------------------------------------------------------- | ----- |
| **`enabled`** | <code>boolean</code> | `true` if performance monitoring is enabled, otherwise `false`. | 0.1.0 |


#### PutAttributeOptions

| Prop | Type | Description | Since |
| --------------- | ------------------- | --------------------------------------- | ----- |
| **`traceName`** | <code>string</code> | Name of the trace to set its attribute. | 6.3.0 |
| **`attribute`** | <code>string</code> | Name of the attribute to set its value. | 6.3.0 |
| **`value`** | <code>string</code> | The value to set to the attribute. | 6.3.0 |


#### GetAttributeResult

| Prop | Type | Description | Since |
| ----------- | --------------------------- | ---------------------------------- | ----- |
| **`value`** | <code>string \| null</code> | The value of the custom attribute. | 6.3.0 |


#### GetAttributeOptions

| Prop | Type | Description | Since |
| --------------- | ------------------- | -------------------------------------------- | ----- |
| **`traceName`** | <code>string</code> | Name of the trace to set its attribute. | 6.3.0 |
| **`attribute`** | <code>string</code> | Name of the attribute to retrieve its value. | 6.3.0 |


#### GetAttributesResult

| Prop | Type | Description | Since |
| ------------ | --------------------------------------- | ------------------------------------------------------------ | ----- |
| **`result`** | <code>{ [key: string]: string; }</code> | A map of all custom attributes of a trace with their values. | 6.3.0 |


#### GetAttributesOptions

| Prop | Type | Description | Since |
| --------------- | ------------------- | ---------------------------------------- | ----- |
| **`traceName`** | <code>string</code> | Name of the trace to get its attributes. | 6.3.0 |


#### PutMetricOptions

| Prop | Type | Description | Since |
| ---------------- | ------------------- | ---------------------------------------------------------------------------------------- | ----- |
| **`traceName`** | <code>string</code> | Name of the trace to set its metric. | 6.3.0 |
| **`metricName`** | <code>string</code> | The metric name. | 6.3.0 |
| **`num`** | <code>number</code> | The value to set for the metric. The given value is floored down to the nearest integer. | 6.3.0 |


#### GetMetricResult

| Prop | Type | Description | Since |
| ----------- | ------------------- | ---------------------------------- | ----- |
| **`value`** | <code>number</code> | The value of the metric if exists. | 6.3.0 |


#### GetMetricOptions

| Prop | Type | Description | Since |
| ---------------- | ------------------- | ------------------------------------ | ----- |
| **`traceName`** | <code>string</code> | Name of the trace to get its metric. | 6.3.0 |
| **`metricName`** | <code>string</code> | The metric name. | 6.3.0 |


#### RecordOptions

| Prop | Type | Description | Since |
| --------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----- |
| **`traceName`** | <code>string</code> | Name of the trace to record. | 6.3.0 |
| **`startTime`** | <code>number</code> | Start time of the trace since epoch in milliseconds. | 6.3.0 |
| **`duration`** | <code>number</code> | The duration of the trace in milliseconds. | 6.3.0 |
| **`options`** | <code>{ metrics?: { [key: string]: number; }; attributes?: { [key: string]: string; }; }</code> | An optional object that holds optional maps of custom metrics and attributes. | 6.3.0 |


### Type Aliases


#### RemoveAttributeOptions

<code><a href="#getattributeoptions">GetAttributeOptions</a></code>

</docgen-api>

## Changelog
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.google.firebase.perf.metrics.Trace;
import java.util.HashMap;
import java.util.Map;

public class FirebasePerformance {

Expand Down Expand Up @@ -39,6 +40,30 @@ public Boolean isEnabled() {
return this.getFirebasePerformanceInstance().isPerformanceCollectionEnabled();
}

public static void putAttribute(Trace trace, String attribute, String value) {
trace.putAttribute(attribute, value);
}

public static String getAttribute(Trace trace, String attribute) {
return trace.getAttribute(attribute);
}

public static Map<String, String> getAttributes(Trace trace) {
return trace.getAttributes();
}

public static void removeAttribute(Trace trace, String attribute) {
trace.removeAttribute(attribute);
}

public static void putMetric(Trace trace, String metricName, long num) {
trace.putMetric(metricName, num);
}

public static long getMetric(Trace trace, String metricName) {
return trace.getLongMetric(metricName);
}

private com.google.firebase.perf.FirebasePerformance getFirebasePerformanceInstance() {
return com.google.firebase.perf.FirebasePerformance.getInstance();
}
Expand Down
Loading

0 comments on commit 1cfcf18

Please sign in to comment.