function* handleAction({ type, ...payload }: Action): Saga<void> {
  const { enableUsageTracking } = yield select(getPrivacySettings);
  if (loggableActions[type] && enableUsageTracking) {
    const { name, getMetadata } = loggableActions[type];
    const metadata = getMetadata(payload);

    yield call(logger.logEvent, name, metadata);
  }
}
This saga is responsible for the bulk of our tracking, by listening for
dispatched actions and firing off log events to our analytics provider.

It is not the exclusive source of track events; React components can fire
them as well. For example, `App.js` fires a `load-application` event on
mount.

The goal of our analytics is to help us understand how people are using
Guppy so that we can make it better for them. Guppy is not a money-making
operation, so we aren't interested in data-mining or collecting any
personally-identifiable information. We don't collect information about,
for example, what people name their projects, because that doesn't teach
us anything about how we can make Guppy better.