Skip to content
This repository was archived by the owner on Dec 28, 2021. It is now read-only.

Commit

Permalink
Alive Message to Mixpanel with flag (#1637)
Browse files Browse the repository at this point in the history
  • Loading branch information
farmaazon committed Jun 22, 2021
1 parent 0eb64c8 commit c1ae187
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 11 deletions.
10 changes: 0 additions & 10 deletions src/js/lib/content/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,6 @@ import cfg from '../../../config'
// @ts-ignore
import assert from 'assert'

// =================
// === Constants ===
// =================

const ALIVE_LOG_INTERVAL = 1000 * 60

// ==================
// === Global API ===
// ==================
Expand Down Expand Up @@ -587,10 +581,6 @@ API.main = async function (inputConfig: any) {

API.initLogging(config)

window.setInterval(() => {
API.remoteLog('alive')
}, ALIVE_LOG_INTERVAL)

// Build data injected during the build process. See `webpack.config.js` for the source.
// @ts-ignore
const hash = GIT_HASH
Expand Down
41 changes: 40 additions & 1 deletion src/rust/ide/src/ide.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,11 @@ use crate::prelude::*;
use crate::controller::project::INITIAL_MODULE_NAME;
use crate::ide::integration::Integration;

use analytics::AnonymousData;
use enso_frp as frp;
use ensogl::application::Application;
use ensogl::system::web::sleep;
use std::time::Duration;

pub use initializer::Initializer;

Expand All @@ -21,6 +25,8 @@ pub use initializer::Initializer;
pub const BACKEND_DISCONNECTED_MESSAGE:&str =
"Connection to the backend has been lost. Please try restarting IDE.";

const ALIVE_LOG_INTERVAL_SEC:u64 = 60;



// ===========
Expand All @@ -35,6 +41,7 @@ pub const BACKEND_DISCONNECTED_MESSAGE:&str =
pub struct Ide {
application : Application,
integration : Integration,
network : frp::Network,
}

impl Ide {
Expand All @@ -43,7 +50,39 @@ impl Ide {
(application:Application, view:ide_view::project::View, controller:controller::Ide)
-> Self {
let integration = integration::Integration::new(controller,view);
Ide {application,integration}
let network = frp::Network::new("Ide");
Ide {application,integration,network} . init()
}

fn init(self) -> Self {
executor::global::spawn(self.alive_log_sending_loop());
self
}

fn alive_log_sending_loop(&self) -> impl Future<Output=()> + 'static {
let network = &self.network;
let scene = self.application.display.scene();
let mouse = &scene.mouse.frp;
let keyboard = &scene.keyboard.frp;

enso_frp::extend! { TRACE_ALL network
on_log_sent <- source::<()>();
mouse_moved <- mouse.position.constant(());
any_mouse_press <- any(mouse.up,mouse.down).constant(());
any_mouse_event <- any(any_mouse_press,mouse_moved,mouse.wheel);
any_keyboard_event <- any(keyboard.down,keyboard.up).constant(());
any_input_event <- any(any_mouse_event,any_keyboard_event);
// True if any input event was captured since the last "alive" log sending.
input_event_received <- bool(&on_log_sent,&any_input_event).sampler();
}
async move {
loop {
let value = AnonymousData(input_event_received.value());
analytics::remote_log_value("alive", "input_event_received",value);
on_log_sent.emit(());
sleep(Duration::from_secs(ALIVE_LOG_INTERVAL_SEC)).await;
}
}
}
}

Expand Down

0 comments on commit c1ae187

Please sign in to comment.