Skip to content

Commit 12e67c6

Browse files
author
Todd Bruner
committed
recfuture popup prevention
This was a really tough one. Thanks to Nick Georgieff for guiding me and helping me debug this.
1 parent 69b4587 commit 12e67c6

13 files changed

+60
-79
lines changed

lib/Scot/App/Responder/RecFutureProxy.pm

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -315,23 +315,13 @@ sub store_entry {
315315

316316
if ( $entryid ) {
317317
# entry exists, post a reply
318-
my $entry = $entry_col->find_iid($entryid);
319-
320-
if ( defined $entry ) {
321-
$parent = $entry->id;
322-
}
318+
my $entry = $entry_col->find_iid($entryid);
319+
$entry->update({
320+
'$set' => {
321+
body => $html,
322+
}
323+
});
323324
}
324-
# need to create an entry
325-
326-
my $entry = $entry_col->create({
327-
body => $html,
328-
target => {
329-
id => $href->{id},
330-
type => 'entity',
331-
},
332-
parent => $parent,
333-
class => 'entry',
334-
});
335325

336326
}
337327

lib/Scot/Controller/Api.pm

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2311,16 +2311,16 @@ sub recfuture {
23112311
});
23122312
my $entity = $mongo->collection('Entity')->find_iid($id);
23132313

2314-
$self->env->mq->send("/topic/scot",{
2315-
action => "created",
2314+
$self->env->mq->send("/topic/scot", {
2315+
action => "updated",
23162316
data => {
2317-
who => $req_href->{user},
2318-
type=> "entry",
2319-
id => $entry->id,
2320-
target => $entry->target,
2321-
},
2317+
who => $self->session('user'),
2318+
type => 'entity',
2319+
id => $id,
2320+
}
23222321
});
23232322

2323+
23242324
$self->env->mq->send("/queue/recfuture",{
23252325
action => "lookup",
23262326
data => {

lib/Scot/Util/Enrichments.pm

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,8 @@ sub BUILD {
9696
isa => 'HashRef',
9797
)
9898
);
99+
$log->debug("creating attribute $name with value ",
100+
{ filter => \&Dumper, value => $href} );
99101
$self->$name($href);
100102
}
101103
else {
@@ -137,13 +139,12 @@ sub enrich {
137139

138140
$log->debug("Looking for enrichment: $enricher_name.");
139141

140-
my $enricher;
141-
try {
142-
$enricher = $self->$enricher_name;
142+
my $enricher = try {
143+
$self->$enricher_name;
143144
}
144145
catch {
145146
$log->error("$enricher_name does not have a defined attribute by same name in enrichments");
146-
next NAME;
147+
return undef;
147148
};
148149

149150
unless ( $enricher ) {
@@ -155,7 +156,7 @@ sub enrich {
155156
next NAME;
156157
}
157158

158-
# $log->debug("Enricher Hash is ",{filter=>\&Dumper, value=>$enricher});
159+
$log->debug("Enricher Hash is ",{filter=>\&Dumper, value=>$enricher});
159160

160161
if ( ref($enricher) eq "HASH" ) {
161162

@@ -173,6 +174,10 @@ sub enrich {
173174
title => $enricher->{title},
174175
},
175176
};
177+
if ( defined $enricher->{nopopup} ) {
178+
$data->{$enricher_name}->{data}->{nopopup} = $enricher->{nopopup};
179+
$log->debug("enricher now ",{filter=>\&Dumper, value=>$data});
180+
}
176181
$update_count++;
177182
}
178183
}
@@ -182,8 +187,13 @@ sub enrich {
182187
data => {
183188
url => sprintf($enricher->{url}, $value),
184189
title => $enricher->{title},
190+
185191
},
186192
};
193+
if ( defined $enricher->{nopopup} ) {
194+
$data->{$enricher_name}->{data}->{nopopup} = $enricher->{nopopup};
195+
$log->debug("enricher now ",{filter=>\&Dumper, value=>$data});
196+
}
187197
$update_count++;
188198
}
189199
}

public/asset-manifest.json

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

public/index.html

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

public/precache-manifest.028d2d4be7a5f5f954f317d49d8c93a0.js

Lines changed: 0 additions & 30 deletions
This file was deleted.

public/service-worker.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

public/static/js/main.dcce07af.chunk.js

Lines changed: 0 additions & 2 deletions
This file was deleted.

public/static/js/main.dcce07af.chunk.js.map

Lines changed: 0 additions & 1 deletion
This file was deleted.

scot-ui/src/detail/selected_entry.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -193,12 +193,12 @@ export default class SelectedEntry extends React.Component {
193193
}
194194
};
195195

196-
linkWarningToggle = (href) => {
196+
linkWarningToggle = (href,nopop=false) => {
197197
if (this.state.isMounted) {
198198
if (this.state.linkWarningToolbar === false) {
199-
this.setState({ linkWarningToolbar: true, link: href });
199+
this.setState({ linkWarningToolbar: true, link: href, nopop: nopop });
200200
} else {
201-
this.setState({ linkWarningToolbar: false });
201+
this.setState({ linkWarningToolbar: false, nopop: nopop });
202202
}
203203
}
204204
};
@@ -464,6 +464,7 @@ export default class SelectedEntry extends React.Component {
464464
<LinkWarning
465465
linkWarningToggle={this.linkWarningToggle}
466466
link={this.state.link}
467+
nopop={this.state.nopop}
467468
/>
468469
) : null}
469470
</div>

scot-ui/src/detail/selected_header.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -476,11 +476,11 @@ export default class SelectedHeader extends React.Component {
476476
}
477477
};
478478

479-
linkWarningToggle = href => {
479+
linkWarningToggle = (href, nopop=false) => {
480480
if (this.state.linkWarningToolbar === false) {
481-
this.setState({ linkWarningToolbar: true, link: href });
481+
this.setState({ linkWarningToolbar: true, link: href, nopop: nopop });
482482
} else {
483-
this.setState({ linkWarningToolbar: false });
483+
this.setState({ linkWarningToolbar: false, nopop: nopop });
484484
}
485485
};
486486

@@ -1015,6 +1015,7 @@ export default class SelectedHeader extends React.Component {
10151015
<LinkWarning
10161016
linkWarningToggle={this.linkWarningToggle}
10171017
link={this.state.link}
1018+
nopop={this.state.nopop}
10181019
/>
10191020
) : null}
10201021
{this.state.viewedByHistoryToolbar ? (

scot-ui/src/modal/entity_detail.js

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1066,8 +1066,9 @@ class EntityBody extends React.Component {
10661066
}
10671067
};
10681068

1069-
linkOnClickIntercept = e => {
1070-
this.props.linkWarningToggle(e.target.id);
1069+
linkOnClickIntercept = (e) => {
1070+
1071+
this.props.linkWarningToggle(e.target.id, e.target.dataset.nopop);
10711072
};
10721073

10731074
componentDidMount() {
@@ -1125,14 +1126,15 @@ class EntityBody extends React.Component {
11251126
} else if (entityData[prop].type === "link") {
11261127
//added this because we dont need two buttons -2019 bryce
11271128
if (entityData[prop].data.title !== "Lookup in Likaboss") {
1129+
const nopop = ( entityData[prop].data.nopopup ) ? true : false;
1130+
console.log(entityData[prop].data);
11281131
entityEnrichmentLinkArr.push(
11291132
<Button
11301133
bsSize="xsmall"
11311134
id={entityData[prop].data.url}
1132-
{ prop.nopopup == 1 ? null :
1133-
onMouseDown={this.linkOnClickIntercept}
1134-
target="_blank"
1135-
}
1135+
data-nopop={nopop}
1136+
onMouseDown={this.linkOnClickIntercept}
1137+
target="_blank"
11361138
>
11371139
{entityData[prop].data.title}
11381140
</Button>

scot-ui/src/modal/link_warning.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,17 @@ export default class LinkWarning extends React.Component {
1919
this.props.linkWarningToggle();
2020
};
2121

22+
apiOnly = () => {
23+
this.props.linkWarningToggle();
24+
fetch(this.props.link);
25+
alert("Request Submitted. Refresh entity display to see results");
26+
};
27+
2228
componentWillMount = () => {
29+
if ( this.props.nopop === "true" ) {
30+
this.apiOnly();
31+
return;
32+
}
2333
let myDomain = window.location.href;
2434
let reg = new RegExp(
2535
/((https?|ftp):\/\/[a-zA-Z0-9\-_\.]+\.)?([a-zA-Z0-9\-_\.]+\.([a-zA-Z]{1,63}))/,

0 commit comments

Comments
 (0)